那你能使用opencv把两幅图像的诧异点找出并标出嘛
时间: 2024-02-11 11:03:42 浏览: 29
当然可以。首先,通过OpenCV读取两张图像,使用cv2.absdiff()函数计算它们的差异图像。然后,使用cv2.threshold()函数对差异图像进行二值化处理,将差异点转换为白色像素,非差异点转换为黑色像素。
接下来,可以使用cv2.findContours()函数找到差异图像中的所有轮廓。对于每个轮廓,可以使用cv2.drawContours()函数在原始图像中绘制一个矩形框来标出差异点的位置。最后,使用cv2.imshow()函数显示标记后的图像。
以下是代码示例:
```python
import cv2
# 读取两张图像
img1 = cv2.imread("image1.jpg")
img2 = cv2.imread("image2.jpg")
# 计算差异图像
diff = cv2.absdiff(img1, img2)
# 二值化处理
thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY)[1]
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 标记差异点
for contour in contours:
(x, y, w, h) = cv2.boundingRect(contour)
cv2.rectangle(img1, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示标记后的图像
cv2.imshow("Diff Image", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
注意,这只是一个简单的示例代码,实际应用中可能需要根据具体需求进行调整。