2015-07-11 2 views
0

Я искал всюду, и я нахожу это действительно удивительным, что нет ссылки на функцию chamerMatching, особенно в Python. У кого-то еще была такая же проблема: no answer:Python OpenCV chamerMatching function reference

Я действительно не хочу знать об алгоритме - я знаю, как работает алгоритм - я хочу знать, как вызвать его на Python и получить издержки, результаты и наиболее подходящий. Я пробовал следующий код.

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 

ret, frame = cap.read() 
frame = cv2.GaussianBlur(frame, (13, 13), 0) 
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 
frame = cv2.adaptiveThreshold(frame,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2) 

templ = cv2.imread("template.png",cv2.CV_LOAD_IMAGE_GRAYSCALE) 

cannyframe = cv2.Canny(frame,5,50,apertureSize=3) 
cannytempl = cv2.Canny(templ,5,50,apertureSize=3) 

cv2.imshow("cannyframe",cannyframe) 
cv2.imshow("cannytempl", cannytempl) 

cv2.waitKey(0) 

#The line below, and NOT any other line, crashes the program 
cv2.chamerMatching(cannytempl,cannyframe) 

Все это прекрасно работает, за исключением последнего вызова функции chamerMatching, которая вызывает интерпретатор питона врезаться и прекратить работу по какой-то причине с сообщением, которое выглядит следующим образом:

Python crash window

С абсолютно нулевой документации по функции, я не могу понять, почему.

EDIT: В приведенный выше код включены все необходимые строки для запуска, а ниже - template.png.

template.png

+0

Хорошо, я отредактирован в образе для вас, так что не волнуйтесь –

+0

Спасибо. Так-то лучше. И теперь ... мы подождем .... :) –

+0

Возможно, вы захотите добавить 'template.png.'. Также дайте код, который может быть запущен, а именно, ваш код выше дает« Traceback (последний звонок последнего): Файл "stackoverflow.py", строка 16, в RET, рамка = cap.read() NameError: название 'шапку' не определен 'См [спросить] – boardrider

ответ

0

я не знаю, если вы все еще нужна эта информация. Но мне также понадобилось сопоставление фаски для моих исследований. И вот что я нашел после того, как столкнулся с той же дилеммой, что и вы.

http://code.opencv.org/issues/3602

:)

+0

Вау, это уже давно, но спасибо за ответ! Я закончил с использованием сопоставления с шаблонами, который не так прочен, как сопоставление фасок, но он работает. Но мне все равно хотелось бы получить фаску. Я пошел по ссылке, которую вы разместили, но не смог разобрать что-нибудь, что могло бы помочь решить проблему. Любые дальнейшие комментарии, пожалуйста? –

+0

Я на самом деле просто сделал то, что было сказано. Я нашел исходный код привязки фасок в opencv и прокомментировал эту строку удаления шаблонов [i] ;. После чего я просто перекомпилировал его. А потом, это сработало :) – htinez

+0

вот где я получил идею http://stackoverflow.com/a/23733981/5722784 – htinez