Найти объект на изображении - PullRequest
0 голосов
/ 03 января 2019

Мне нужно найти только объект тигра на этом рисунке, применяя операции сегментации и другие операции, но я не знаю много об этом.

введите описание изображения здесь

1 Ответ

0 голосов
/ 03 января 2019

Проводили ли вы какие-либо исследования, прежде чем спрашивать?Переполнение стека не предназначено для решения вашего проекта за вас.Кроме того, по моему опыту, openCV имеет довольно крутую кривую обучения.Кто-то, кто дает вам код, который делает то, что вы хотите, вы ничему не научитесь.Вы узнаете больше всего, попробовав для себя.Много.

С учетом сказанного ниже приведен код, который удаляет фон.Это очень простой и специфичный для вашего имиджа.В целом это не очень хорошо, как вы можете видеть в результате.Но так как вы новичок в opencv, возможно, вам не слишком сложно это понять.

Я бы посоветовал вам исследовать операции, выполняемые в коде, пока вы не поймете их.(прочитайте здесь , здесь и здесь ) Посмотрите на изображения до и после операций, чтобы увидеть, что они делают.Затем, когда вы готовы, вы можете создать лучший фоновый вычитатель самостоятельно, следуя этому учебнику или используя grabcut

Результат:

enter image description here

# load image
img = cv2.imread("animal.jpg")
# detect edges
edges = cv2.Canny(img,100,100)
# merge edges to big blob
kernel =  np.ones((10,10),np.uint8)
edges = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel)
# detect contour of blob
im2, contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# draw filled contour on edges-img
for cnt in contours:
    cv2.drawContours(edges, [cnt], 0, (255,255,255), -1)
# uses edges-img as mask to remove background
res = cv2.bitwise_and(img,img,mask=edges)
cv2.imshow("img", res) 
cv2.waitKey(0)
cv2.destroyAllWindows()   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...