我想根据奶牛的体型来识别它。我正在尝试使用模板匹配,因为我可以收集数据,相机是相当稳定的,以及奶牛的位置。然而,结果并不完美,因为我认为匹配也包括背景。奶牛的示例如下所示:
背景或多或少是静态的:
我尝试过简单的减法,但结果很糟糕,我认为这是因为背景有相似的像素值。我得到的减法输出示例如下:
为了简单起见,我想继续使用模板匹配进行识别。我使用下面的代码得到okayish结果,它没有预处理或过滤。我相信有办法提高我的成绩。我尝试过不同类型的阈值处理,但效果没有那么好,我再次认为问题出在太阳上
import cv2
import os
import numpy as np
cap = cv2.VideoCapture('Cow data/cow5/cow5.mp4')
while (cap.isOpened()):
ret, frame = cap.read()
img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
template = cv2.imread('Cow data/cow5/Cow5.jpg', 0)
w, h = template.shape[::-1]
threshold = 0.7
loc = np.where(res >= threshold) #or res1 >= threshold)# or res2>= threshold)## or res3>= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(frame, pt, (pt[0] + w, pt[1] + h), (0, 255, 255), 25)
cv2.imshow('Detected', frame)
cv2.imshow('Other', img_gray)
if cv2.waitKey(1) & 0xFF == ord('c'):
cv2.imwrite('Saved cows/Cow1/Cow1_extra'+str(save)+'.jpg', frame)
save+=1
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.waitKey(0)
cap.release()
cv2.destroyAllWindows()
我想知道隔离母牛的最好方法是什么。我试过grabcut,但效果很差,速度也很慢。改进结果的最佳方法是什么?我应该做什么样的预处理
我对图像处理非常陌生,我希望避免更复杂的图像处理,如使用surf进行特征提取等
任何建议都将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐