本文介绍了使用OpenCV Python提取所有边界框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一幅包含多个边界框的图像.
I have an image that contains more than one bounding box.
我需要提取其中包含边界框的所有内容.到目前为止,从这个站点我已经得到了这个答案:
I need to extract everything that has bounding boxes in them. So far, from this site I've gotten this answer:
y = img[by:by+bh, bx:bx+bw]
cv2.imwrite(string + '.png', y)
它有效,但是只有一个.我应该如何修改代码?我尝试将其放入轮廓循环中,但它仍会喷出一个图像而不是多个图像.
It works, however, it only gets one. How should I modify the code? I tried putting it in the loop for contours but it still spews out one image instead of multiple ones.
非常感谢您.
推荐答案
去了:
import cv2
im = cv2.imread('c:/data/ph.jpg')
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
contours, hierarchy = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)[-2:]
idx =0
for cnt in contours:
idx += 1
x,y,w,h = cv2.boundingRect(cnt)
roi=im[y:y+h,x:x+w]
cv2.imwrite(str(idx) + '.jpg', roi)
#cv2.rectangle(im,(x,y),(x+w,y+h),(200,0,0),2)
cv2.imshow('img',im)
cv2.waitKey(0)
这篇关于使用OpenCV Python提取所有边界框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!