小编xan*_*791的帖子

使用OpenCV Python提取所有边界框

我有一个包含多个边界框的图像.
边界框中的书籍

我需要提取其中包含边界框的所有内容.到目前为止,从这个网站我得到了这个答案:

y = img[by:by+bh, bx:bx+bw]
cv2.imwrite(string + '.png', y)
Run Code Online (Sandbox Code Playgroud)

然而,它只有一个.我该如何修改代码?我尝试将它放在轮廓的循环中,但它仍然喷出一个图像而不是多个图像.

非常感谢你提前.

python opencv bounding-box extraction

11
推荐指数
2
解决办法
3万
查看次数

需要通过OpenCV Python检测书籍

看,我一直试图在书架上检测书籍:

在此输入图像描述

我使用Contours作为边界框.但是,我只想捕获实际的书籍对象.如果我从Canny中减去阈值,它将不会自己检测书籍边缘,但它会检测书籍标题或脊柱中的某些图像.

我使用了houghlines,它可以很好地检测书籍边缘.如何应用边界框但使用houghlines而不是轮廓?

我用于轮廓发现的代码:

    edges = cv2.Canny(blur,thresh,thresh*2)
    drawing = np.zeros(img.shape,np.uint8)  
    contours,hierarchy = cv2.findContours(edges,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    for cnt in contours:
        x,y,w,h = cv2.boundingRect(cnt)
        cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
        rect = cv2.minAreaRect(cnt)
        box = cv2.cv.BoxPoints(rect)
        box = np.int0(box)
Run Code Online (Sandbox Code Playgroud)

哪里:

    img = cv2.imread('books3.jpg')
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    blur = cv2.GaussianBlur(gray,(5,5),0)
Run Code Online (Sandbox Code Playgroud)

对于houghlines:

    lines = cv2.HoughLines(edges,1,np.pi/180,120)
    for rho,theta in lines[0]:
        a = np.cos(theta)
        b = np.sin(theta)
        x0 = a*rho
        y0 = b*rho
        x1 = int(x0 + 1000*(-b))   
        y1 = int(y0 + 1000*(a))    
        x2 = int(x0 - 1000*(-b))   
        y2 = int(y0 …
Run Code Online (Sandbox Code Playgroud)

python opencv

10
推荐指数
1
解决办法
1735
查看次数

标签 统计

opencv ×2

python ×2

bounding-box ×1

extraction ×1