gpt4 book ai didi

python - 需要通过OpenCV Python检测书籍

转载 作者:太空狗 更新时间:2023-10-29 19:28:41 24 4
gpt4 key购买 nike

看,我一直在尝试检测书架中的书籍:

enter image description here

我使用轮廓作为边界框。但是,我只想捕获实际 书籍对象。如果我降低 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)

哪里:

    img = cv2.imread('books3.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(5,5),0)

对于 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 - 1000*(a))

哪里:

    im = cv2.imread('books2.jpg')
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,100,300,apertureSize = 3)

非常感谢您。

最佳答案

实际上我自己也在做类似的事情。试图把书架上的书分开。请问贵方目前进展如何?

我还没有尝试过等高线方法。然而,我所做的尝试是对图像进行预处理,在使用 HoughLines 之前对图像进行处理。下图显示了一个粗略的结果。 enter image description here

我承认我也必须完美地分割这些书。正如您在图片中看到的,由于书脊的性质,有比我实际想要的更多的线条。我正在研究可以帮助我解决此类问题的预处理方法。

我注意到您提到“如果我降低 Canny 的阈值,它不会检测书本边缘本身,但它会检测书名或书脊中的一些图像。”也许对于 HoughLine Parameters,你可以调整 theta?例如 90 度,这样就不会检测到书名等。

您也可以尝试 HoughLineP,它基本上是概率霍夫线变换。可以在以下位置找到更多详细信息:

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

希望我的方法能提供一些想法。我也希望听到您关于轮廓方法的更新。希望我们可以分享技巧并一起工作,因为我们有一个共同的目标(:希望很快收到您的来信。

关于python - 需要通过OpenCV Python检测书籍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18948788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com