Python-opencv-运动检测-将轮廓结果提取到文件或函数
我在OpenCV中有运动跟踪功能,但我想让python在运动检测中提取轮廓内的任何东西的图像,以便将来在程序中使用或作为图像写入 迄今为止的代码:Python-opencv-运动检测-将轮廓结果提取到文件或函数,python,opencv,detection,motion,Python,Opencv,Detection,Motion,我在OpenCV中有运动跟踪功能,但我想让python在运动检测中提取轮廓内的任何东西的图像,以便将来在程序中使用或作为图像写入 迄今为止的代码: 导入cv2 将numpy作为np导入 从windowcapture导入windowcapture wincap=WindowCapture(“您的窗口在此”) frame1=wincap.get_屏幕截图() frame2=wincap.get_屏幕截图() 虽然(正确): diff=cv2.absdiff(frame1,frame2) 灰色=cv2
导入cv2
将numpy作为np导入
从windowcapture导入windowcapture
wincap=WindowCapture(“您的窗口在此”)
frame1=wincap.get_屏幕截图()
frame2=wincap.get_屏幕截图()
虽然(正确):
diff=cv2.absdiff(frame1,frame2)
灰色=cv2.CVT颜色(差异,cv2.COLOR\u BGR2GRAY)
模糊=cv2.高斯模糊(灰色,(5,5),0)
_,thresh=cv2.threshold(模糊,20255,cv2.thresh_二进制)
扩张=cv2。扩张(阈值,无,迭代次数=3)
等高线,u=cv2.找到的轮廓(放大,cv2.RETR\u树,cv2.链近似\u简单)
cv2.绘制轮廓(框架1,轮廓-1,(0,255,0),2)
cv2.imshow(“窗口”,框架1)
frame1=frame2
frame2=wincap.get_屏幕截图()
如果cv2.waitKey(25)&0xFF==ord('q'):
cv2.destroyAllWindows()
打破
欢迎提供任何帮助或建议。谢谢此功能可以帮助您。它计算轮廓的边界框区域,并从图像中裁剪轮廓
def get_sub_images(image, contours):
"""
Crop images according to the contour bounding boxes and return them in a
list.
Args:
image: numpy.ndarray
contours: list
Returns:
list
"""
sub_images = []
for cnt in contours:
x, y, w, h = cv2.boundingRect(cnt)
sub_image = image[slice(y, y+h), slice(x, x+w)]
sub_images.append(sub_image)
return sub_images
我在
pip
中找不到windowcapture
包,所以我不会写一个正常的答案,但我可以提供帮助。您可以使用cv2.floodfill
来填充轮廓,然后只需使用cv2.bitwise_和
将遮罩作为填充轮廓,框架作为src即可。然后你会得到轮廓内的图像。