python-opencv摄像头边缘识别并与其余图像对比
时间: 2024-01-18 19:02:11 浏览: 106
要进行摄像头边缘识别并与其他图像进行对比,您可以使用Python中的OpenCV库。以下是一个简单的代码示例:
```
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
edges = cv2.Canny(frame, 100, 200) # 边缘检测
cv2.imshow('Edges', edges)
# 加载对比图像
compare_img = cv2.imread('compare.jpg', 0)
compare_edges = cv2.Canny(compare_img, 100, 200)
# 对比边缘图像
res = cv2.matchTemplate(edges, compare_edges, cv2.TM_CCOEFF_NORMED)
threshold = 0.8 # 设定阈值
loc = np.where(res >= threshold)
# 绘制矩形框并显示结果
for pt in zip(*loc[::-1]):
cv2.rectangle(frame, pt, (pt[0]+compare_edges.shape[1], pt[1]+compare_edges.shape[0]), (0, 255, 0), 2)
cv2.imshow('Frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
以上代码首先使用`cv2.VideoCapture()`函数打开摄像头,然后在一个无限循环中读取每一帧图像。在每个循环迭代中,使用`cv2.Canny()`函数将每一帧图像转换为边缘图像,并将其与一个预先加载的对比图像进行比较。使用`cv2.matchTemplate()`函数进行匹配,并使用设定的阈值过滤结果。最后,使用`cv2.rectangle()`函数在原始图像中绘制矩形框并显示结果。
阅读全文