2013-09-22 34 views
10

thấy đấy, tôi đã cố gắng để phát hiện cuốn sách trong một kệ sách:Cần phát hiện cuốn sách qua OpenCV Python

enter image description here

tôi đã sử dụng Contours cho bounding hộp. Tuy nhiên, tôi chỉ muốn chụp đối tượng sách thực tế. Nếu tôi giảm ngưỡng của Canny, nó sẽ không tự phát hiện ra cuốn sách nhưng nó phát hiện ra tên sách hoặc một số hình ảnh từ cột sống.

Tôi đã sử dụng houghlines và nó hoạt động tốt để phát hiện cạnh sách. Làm thế nào tôi có thể áp dụng các hộp giới hạn nhưng với houghlines thay vì đường nét?

mã tôi sử dụng cho đường viền Phát hiện:

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) 

nơi:

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

Đối với 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)) 

nơi:

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

Cảm ơn bạn rất nhiều trước.

+0

Bạn có thể cho chúng tôi biết một số mã bạn đã thử không? – tacaswell

+0

tất nhiên. – xandra12791

+0

Bất kỳ tiến trình nào với điều này? Đã hơn một năm rồi. Tôi cũng thích làm điều tương tự. Chơi xung quanh với opencv cũng chỉ khác biệt tôi đang sử dụng wrapper nodejs. – ThomasReggi

Trả lời

2

Tôi đang thực sự làm việc trên một cái gì đó tương tự bản thân mình. cố gắng phân đoạn các sách từ một cuốn sách khác trong một giá sách. Tôi muốn hỏi tiến bộ của bạn cho đến nay là gì?

Tôi chưa thử phương pháp đường nét. Tuy nhiên, những gì tôi đã cố gắng là xử lý trước hình ảnh, không thể sử dụng hình ảnh trước khi sử dụng HoughLines. Hình ảnh belows cho thấy một kết quả thô. enter image description here

Tôi thừa nhận rằng tôi cũng phải phân đoạn hoàn hảo các sách đó. Như bạn thấy trong hình, có nhiều dòng hơn tôi thực sự muốn vì bản chất của cột sống sách. Tôi đang xem xét các phương pháp tiền xử lý có thể giúp tôi loại bỏ vấn đề đó.

Tôi nhận thấy bạn đã đề cập rằng "Nếu tôi giảm ngưỡng từ Canny, nó sẽ không tự phát hiện ra cuốn sách nhưng nó phát hiện tiêu đề sách hoặc một số hình ảnh từ cột sống." Có lẽ cho tham số HoughLine, bạn có thể điều chỉnh theta? ví dụ đến 90 độ sao cho tiêu đề sách, v.v ... sẽ không được phát hiện.

Bạn cũng có thể thử HoughLineP về cơ bản là Xác suất dòng biến đổi. Thông tin chi tiết về điều đó có thể được tìm thấy trong:

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

Hy vọng phương pháp của tôi đưa ra một số ideas.I cũng hy vọng được nghe thông tin cập nhật từ bạn liên quan đến phương pháp đường viền của bạn. Hy vọng chúng tôi có thể chia sẻ các mẹo và làm việc cùng nhau vì chúng tôi có mục tiêu chung (: Hy vọng sớm nhận được phản hồi từ bạn)

+1

Tôi hiểu. Tôi đã thử sử dụng HoughLines và tôi cũng đã thử sử dụng HoughLinesP. Những gì tôi muốn làm bây giờ là để có được vị trí cho mỗi cuốn sách để tôi có thể trích xuất nó và tạo một bản sao mới cho cuốn sách được trích xuất. Tôi có một ý tưởng rằng có lẽ tôi có thể làm một mặt nạ đường viền cho mỗi cuốn sách được phát hiện để các chi tiết bên trong sẽ không được chọn bởi findContours.Hey ~ Tôi thực sự đánh giá cao điều này, và vâng, nếu tôi có ý tưởng, tôi sẽ cho bạn biết. : D Cảm ơn bạn rất nhiều. – xandra12791

Các vấn đề liên quan