打开摄像头.拍摄两张图片进行对比内容,并输出不同点 代码
时间: 2023-06-17 16:08:52 浏览: 109
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
以下是使用Python的OpenCV库实现拍摄两张图片并对比不同点的代码:
```python
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
# 拍摄第一张图片
ret, img1 = cap.read()
# 等待一秒钟,让摄像头调整到合适的状态
cv2.waitKey(1000)
# 拍摄第二张图片
ret, img2 = cap.read()
# 关闭摄像头
cap.release()
# 对比两张图片
diff = cv2.absdiff(img1, img2)
# 将差异图像转换为灰度图像
gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
# 使用阈值将灰度图像转换为二进制图像
thresh = cv2.threshold(gray, 30, 255, cv2.THRESH_BINARY)[1]
# 找到图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img2, contours, -1, (0, 0, 255), 2)
# 显示结果
cv2.imshow('Diff', diff)
cv2.imshow('Thresh', thresh)
cv2.imshow('Contours', img2)
cv2.waitKey()
cv2.destroyAllWindows()
```
这段代码使用了OpenCV库中的函数来打开摄像头、拍摄图片、对比不同点、绘制轮廓等操作。其中,`cv2.absdiff()`函数用于计算两张图片的差异图像,`cv2.cvtColor()`函数用于将图像转换为灰度图像,`cv2.threshold()`函数用于将灰度图像转换为二进制图像,`cv2.findContours()`函数用于找到图像中的轮廓,`cv2.drawContours()`函数用于绘制轮廓。最终,程序会显示三幅图像:差异图像、二进制图像和带有轮廓的原始图像,并等待用户按下任意键结束程序。
阅读全文