OPENCV - 如何在OpenCV中使用Haar Cascade Github xml文件?

OPENCV - How to use Haar cascade Github xml files in OpenCV?

本文关键字:Cascade Haar Github xml 文件 OpenCV OPENCV      更新时间:2023-10-16

我开始在OpenCV 3.4.2(.Net C++ 2017(中学习对象检测。 我对检测图片中的草莓非常感兴趣(目前我对检测草莓非常感兴趣(。我知道OpenCV在OpenCV目录中有一些预先训练好的Haar级联文件,但没有草莓.xml文件(有身体部位的文件(。

所以我决定在谷歌上搜索,试图找到训练有素的草莓哈尔级联.xml文件。我找到了这个.xml文件XML草莓文件,但是当我尝试执行程序时出现错误-49。我已经使用 OpenCV 文件正确执行了程序,但是当我尝试使用 GitHub XML 文件时我无法正确执行。

我在 StackOverflow 上找到了这个线程 StackOverFlow 关于 OpenCV 中的 GitHub XML 文件的线程,并且用户声称不可能在 OpenCV 中使用 GitHub XML 文件。

我的问题是关于是否有办法使用我在OpenCV中在此线程中发布的XML GitHub文件,或者我需要训练自己的XML文件?我想使用 GitHub 文件。

编辑(1(我在OpenCV中找到了这个链接草莓检测,如果你看一下源代码,似乎使用相同的strawberry_classifier.xml。我不知道文件名是否只是一个巧合(Github文件名和第三个链接的源代码中显示的文件名完全相同(。至少程序员(来自第 3 个链接(在使用(显然(我想使用的相同.xml文件时似乎获得了一些结果。但是我不知道如何使用该strawberry_classifier.xml文件。

Python dev here, 我迟到了,但以防有人仍然想看到答案:

GitHub 的分类器工作得很好,如这个 Python 代码所示(抱歉,我没有在 C++ 中这样做,但我认为它不会有太大不同(

该脚本使用网络摄像头作为图像源。您可以向网络摄像头显示一些草莓图像,它会识别它:

import cv2 #import library
#define Haar Cascade Classifier
Strawberry_Classifier = cv2.CascadeClassifier(r"C:UsersStrawberry.xml")
VideoCapture = cv2.VideoCapture(0) #capture video from camera
#set video size
VideoCapture.set(3, 540)
VideoCapture.set(4, 360)
while True:
#Connect video and convert
Connection_Success, Video = VideoCapture.read()                              #returns a bool and video array in one tuple (sucess, video array)
RGB_video = cv2.cvtColor(Video, cv2.COLOR_BGR2RGB)                           #converts to suitable format
Detect_Strawberry = Strawberry_Classifier.detectMultiScale(RGB_video, 1.3, 13) #MODIFY THIS FOR LESS/MORE DETECTION ACCURACY 
#Detect Strawberry
for(x,y,w,h) in Detect_Strawberry: #x,y width, height
cv2.rectangle(Video, (x, y), (x + w, y + h), (0, 255, 0), 3)                         #Put a rectangle around Strawberry

cv2.imshow("Window", Video) #show video
#quit if q is pressed, quit
QuitKey = cv2.waitKey(30)
if QuitKey == ord("q"):
VideoCapture.release()
cv2.destroyAllWindows()