Как я могу экспортировать каждое совпадение изображения, используя шаблон в opencv? - PullRequest
0 голосов
/ 22 июня 2019

Мне нужно экспортировать каждый шаблон совпадения, например, в разные изображения.

В этом URL есть пример того, как нарисовать границу матча. https://docs.opencv.org/trunk/d4/dc6/tutorial_py_template_matching.html

В этом примере мне нужно экспортировать 19 монет.

Я могу экспортировать только первую монету, используя эту

#path template str(sys.argv[ai[1]])
trainImg_c=cv2.imread(str(sys.argv[ai[1]]),0)
trainKP_c,trainDesc_c=detector.detectAndCompute(trainImg_c,None)
#path of the image str(sys.argv[1])
QueryImg_c=cv2.imread(str(sys.argv[1]),0)
queryKP_c,queryDesc_c=detector.detectAndCompute(QueryImg_c,None)
matches_c=flann.knnMatch(queryDesc_c,trainDesc_c,k=2)

goodMatch_c = []

for m_c,n_c in matches_c:
    if(m_c.distance<0.75*n_c.distance):
        goodMatch_c.append(m_c)

tp=[]
qp=[]
for m_c in goodMatch_c:
    tp.append(trainKP_c[m_c.trainIdx].pt)
    qp.append(queryKP_c[m_c.queryIdx].pt)
tp,qp=np.float32((tp,qp))
H,status=cv2.findHomography(tp,qp,cv2.RANSAC,3.0)
h,w=trainImg_c.shape
trainBorder=np.float32([[[0,0],[0,h-1],[w-1,h-1],[w-1,0]]])

queryBorder=cv2.perspectiveTransform(trainBorder,H)
cv2.polylines(QueryImg_c,[np.int32(queryBorder)],True,(0,255,0),5)  

perspectiveM=cv2.getPerspectiveTransform(np.float32(queryBorder),trainBorder)
found = cv2.warpPerspective(QueryImg_c,perspectiveM,(w,h))  

cv2.imwrite(destiny_file_type, found)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...