使用OpenCV Python提取所有边界框 [英] Extract all bounding boxes using OpenCV Python

查看:553
本文介绍了使用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提取所有边界框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆