Python OpenCV divide image(shelf) into parts(shelves) -


my task find proper solution dividing image shelf horizontal parts (shelves). shelves different in color, size , can , can not contain objects on them.

for example these 2 shelves on images below have different spaces between each other , colors:

enter image description here enter image description here

is there solution perform task different occasions? thinking applying sobel y gradient hough line transform, efficient different cases?

note, number of rows in shelf known before image processing, maybe helpful.

thanks information in advance!

answer:

for has similar task me sharing solution used.

first time thinking using lines rows division, not universal solution me. satisfactory result have recieved cv2.reduce. thereby can find horizontal or vertical graphs our image (in case horizontal graph).

after graph ready can write algorithm detect regions divided.

below code fragment apply reduce on image , visualise graph:

import cv2 matplotlib import pyplot plt   image = cv2.imread('test6.jpg') gray = cv2.cvtcolor(image, cv2.color_bgr2gray) ret,th = cv2.threshold(gray,0,255,cv2.thresh_binary+cv2.thresh_otsu) reduced_h = cv2.reduce(th, 1, cv2.reduce_avg)  index, line in enumerate(reduced_h):     cv2.line(image, (0, index), (line[0], index), (0, 255, 0), 1)  plt.imshow(cv2.cvtcolor(image, cv2.color_bgr2rgb)),plt.show() 

which gives: enter image description here

i able reach next result modified algorithm: enter image description here

you can discover code at repo.


Comments

Popular posts from this blog

python Tkinter Capturing keyboard events save as one single string -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

javascript - Z-index in d3.js -