2016-07-24 1 views
0

У меня есть картинки, где я нашел некоторые контуры вокруг собак и т.д .:Есть ли какая-либо функция в openCV или другой библиотеке, которая может чередовать квадраты в произвольном контуре?

dog contour

Я хочу мозаичные квадраты/прямоугольники внутри контура. Есть ли функция openCV (или другая библиотека) для этого? Я использую Python. Я хотел бы, чтобы это выглядело примерно так:

with squares now

ответ

0

я смог решить эту проблему первых прямоугольников чертежа по всему изображению, а затем проверить, какие из них были в районе с собакой:

# the image here is stored as the variable fg 
# with b, g, r, and alpha channels 
# the alpha channel is masking the dog part of the image 
import cv2 

b, g, r, a = cv2.split(fg) 
fgcp = fg.copy() 
h, w = fg.shape[:2] 
h -= 1 
w -= 1 # avoid indexing error 
rectDims = [10, 10] # w, h of rectangles 
hRects = h/rectDims[0] 
wRects = w/rectDims[1] 
for i in range(wRects): 
    for j in range(hRects): 
     pt1 = (i * rectDims[0], j * rectDims[1]) 
     pt2 = ((i + 1) * rectDims[0], (j + 1) * rectDims[1]) 
     # alpha is 255 over the part of the dog 
     if a[pt1[1], pt1[0]] == 255 and a[pt2[1], pt2[0]] == 255: 
      cv2.rectangle(fgcp, pt1, pt2, [0, 0, 255], 2) 

cv2.imshow('', fgcp), cv2.waitKey(0) 

enter image description here

это не обязательно идеальной реализации, но она работает достаточно хорошо.

 Смежные вопросы

  • Нет связанных вопросов^_^