我已经训练了haarclassifier并尝试使用以下代码找到我正在搜索的模式的宽度和高度。
import numpy as np
import cv2
pattern_cascade = cv2.CascadeClassifier('stage15.xml')
img = cv2.imread('image.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
pattern = pattern_cascade.detectMultiScale(gray,1.3,5)
(x,y,w,h) = pattern
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
但是我收到以下错误。有人可以帮我解决这个问题吗?
kathir@kathir-VirtualBox:~/Desktop/Haarcascade /neg and bg$ python FindPattern.py
OpenCV Error: Unspecified error (The node does not represent a user object (unknown type?)) in cvRead, file /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/persistence.cpp, line 4991
Traceback (most recent call last):
File "FindPattern.py", line 5, in <module>
pattern_cascade = cv2.CascadeClassifier('stage15.xml')
cv2.error: /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/persistence.cpp:4991: error: (-2) The node does not represent a user object (unknown type?) in function cvRead
如果有人也帮助理解错误,我们表示赞赏。
答案 0 :(得分:0)
使用opencv_traincascade
训练级联时,您希望训练模型的阶段数是它将为每个阶段生成的xml
个文件的数量。在您存储的文件夹中,所有xml文件都将显示like this,存在一个名为cascade.xml
的文件,其中包含所有阶段的数据。此cascade.xml
是您要用于CascadeClassifier的文件,而不是任何特定的舞台文件。
你的代码看起来像这样。
import numpy as np
import cv2
pattern_cascade = cv2.CascadeClassifier('cascade.xml')
img = cv2.imread('image.png')
....