Вот что у меня естьOpenCV: Как найти цвет внутри контура/полигона?
im = cv2.imread('luffy.jpg')
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,127,255,0)
contours,h = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
// return color inside of the contour here
mask = np.zeros(cnt.shape[:2],np.uint8)
mean = cv2.mean(cant,mask) // I think this is promising but so far it returns arrays with just zeros. I think its because I used np.zeros above to find the mask....
moment = cv2.moments(cnt) //maybe this will help?
я могу найти нет такой функции OpenCV не встраивается. Я предполагаю, что, возможно, вы можете сделать это с моментами? Как я могу это достичь?
EDIT: с предлагаемым решением, заданным За Лин У меня есть этот входной файл:
и этот вывод изображение:
В одну сторону: вы можете получить область изображения внутри контура, а затем использовать его для дальнейшей обработки. Обрезать внутреннюю область см. Это: http://stackoverflow.com/questions/28759253/how-to-crop-the-internal-area-of-a-contour – Vipul
Я думаю, что лучший способ - обработать гистограмму внутри образ. [Это] (http://www.pyimagesearch.com/2014/01/22/clever-girl-a-guide-to-utilizing-color-histograms-for-computer-vision-and-image-search-engines/) может помочь. – Mahm00d
первая ссылка, кажется, дает пустую белую обрезку, поэтому я не мог ее использовать, чтобы найти цвет. Гистограмма может работать, но она кажется подходящей для создания фактической гистограммы. Я не могу найти способ усреднить значения каждого канала, например. Я обнаружил, что вы можете запустить cv2.mean (cnt, mask) на контуре, чтобы получить средние значения каналов BGR, что кажется многообещающим. Пока нет успеха, но – BigBoy1337