Python全系列 教程
3567个小节阅读:5930.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
思路:
为了更快精准的找出滑动的距离,因此可以给图片做适当的处理
为了方便测试,可以考虑使用python的实时图像框架调试
xxxxxxxxxx
pip install opencv-python==4.6.0.66
pip install streamlit==1.11.1
xxxxxxxxxx
streamlit run file_path
翻译
如果您是我们的开发合作伙伴之一,或者您有兴趣获得
个人技术支持或Streamlit更新,请输入您的电子邮件
地址如下。否则,您可以将该字段留空。
图片比对相似
cv2.matchTemplate(big, small, cv2.TM_CCORR_NORMED)
方差匹配方法(TM_SQDIFF):匹配度越高,值越接近于0
归一化方差匹配方法(TM_SQDIFF_NORMED):完全匹配结果为0
相关性匹配方法(TM_CCORR):完全匹配会得到很大值,不匹配会得到一个很小值或0
归一化的互相关匹配方法(TM_CCORR_NORMED):完全匹配会得到1, 完全不匹配会得到0
相关系数匹配方法(TM_CCOEFF):完全匹配会得到一个很大值,完全不匹配会得到0,完全负相关会得到很大的负数
归一化的相关系数匹配方法( TM_CCOEFF_NORMED):完全匹配会得到1,完全负相关匹配会得到-1,完全不匹配会得到0
xxxxxxxxxx
# pip install opencv-python
# pip install streamlit
import cv2
import streamlit as st
def get_long():
# 导入图片
img1 = cv2.imread('./imgs/cpt1.png')
img2 = cv2.imread('./imgs/cpt2.png')
# 建立2个 st 控制的变量
min_value = st.slider('input min value',max_value=500)
max_value = st.slider('input max value',max_value=1000)
# 边缘化图片
# Canny使用的滞后阈值,低阈值,高阈值
# canny1 = cv2.Canny(img1,min_value,max_value)
'''
1. Canny 使用了滞后阈值,滞后阈值需要两个阈值(高阈值和低阈值)。
2. 如果某一像素位置的幅值超过 高 阈值, 该像素被保留为边缘像素。
3. 如果某一像素位置的幅值小于 低 阈值, 该像素被排除。
4. 如果某一像素位置的幅值在两个阈值之间,该像素仅仅在连接到一个高于 高 阈值的像素时被保留。
'''
canny1 = cv2.Canny(img1,min_value,max_value)
# 保存图片
cv2.imwrite('./imgs/tcpt1.png',canny1)
# 使用 streamlit 输出结果
st.write(canny1)
st.image(canny1)
canny2 = cv2.Canny(img2,min_value,min_value)
cv2.imwrite('./imgs/tcpt2.png',canny2)
st.image(canny2)
# 加载边缘化后的图片
big = cv2.imread('./imgs/tcpt1.png')
small = cv2.imread('./imgs/tcpt2.png')
# 对比图片
rs = cv2.matchTemplate(big, small, cv2.TM_CCORR_NORMED)
# 通过制定的方法来查询相应的结果
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(rs)
# st.write(rs)
# st.write(min_val, max_val, min_loc, max_loc)
# st.write(big.shape)
return max_loc[0]/big.shape[1]*340
# 画图个框来验证,匹配的结果是否正确
# tw,th = small.shape[:2]
# timg = cv2.rectangle(big, max_loc, (max_loc[0]+tw,max_loc[1]+th), (255,255,0))
# st.image(timg)
if __name__ == '__main__':
get_long()