Opencv中!face_cascade.load( face_cascade_name )报错,xml文件无法加载

face_cascade.load

在opencv中加载xml文件的代码片段如下

// 代码片段
 cv::String face_cascade_name = "D:/opencv2.49/opencv/sources/data/haarcascades/haarcascade_eye_tree_eyeglasses.xml";

 if (!face_cascade.load(face_cascade_name))
  { printf("--(!)Error loading face cascade, please change face_cascade_name in source code.\n"); return -1; };


在VS2022中编译时,总是加载失败,显示Error loading face cascade。大家可以从以下几方面进行排查:

1.路径是否正确。要注意两级之间的连接使用/或\,并且注意路径中要不含中文
2.xml文件的版本是否正确,opencv版本和vs是否适配
3.要用release版本运行,不能用debug!!(我也不知道为什么,但我debug了两周都报错,换成release就可以了
要注意换成release后,相应的项目属性需要重新配置,特别是附加依赖项,要换成没有d的版本

祝大家调试顺利

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
void detectAndDisplay(Mat frame); /** Global variables */ CascadeClassifier face_cascade; CascadeClassifier eyes_cascade; /** @function main */ int main(int argc, const char** argv) { CommandLineParser parser(argc, argv, "{help h||}" "{face_cascade|data/haarcascades/haarcascade_frontalface_alt.xml|Path to face cascade.}" "{eyes_cascade|data/haarcascades/haarcascade_eye_tree_eyeglasses.xml|Path to eyes cascade.}" "{camera|0|Camera device number.}"); parser.about("\nThis program demonstrates using the cv::CascadeClassifier class to detect objects (Face + eyes) in a video stream.\n" "You can use Haar or LBP features.\n\n"); parser.printMessage(); String face_cascade_name = samples::findFile(parser.get<String>("face_cascade")); String eyes_cascade_name = samples::findFile(parser.get<String>("eyes_cascade")); //-- 1. Load the cascades if (!face_cascade.load(face_cascade_name)) { cout << "--(!)Error loading face cascade\n"; return -1; }; if (!eyes_cascade.load(eyes_cascade_name)) { cout << "--(!)Error loading eyes cascade\n"; return -1; }; int camera_device = parser.get<int>("camera"); VideoCapture capture; //-- 2. Read the video stream capture.open(camera_device); if (!capture.isOpened()) { cout << "--(!)Error opening video capture\n"; return -1; } Mat frame; while (capture.read(frame)) { if (frame.empty()) { cout << "--(!) No captured frame -- Break!\n"; break; } //-- 3. Apply the classifier to the frame detectAndDisplay(frame); if (waitKey(10) == 27) { break; // escape } } return 0; }
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值