gpt4 book ai didi

c++ - 使用 OCL 进行人脸检测 (OPENCV)

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:34 24 4
gpt4 key购买 nike

我正在尝试使用以下代码利用 GPU 检测人脸

#include <opencv\cv.h>
#include <opencv\highgui.h>

#include <iostream>
#include <stdio.h>
#include <opencv2\ocl\ocl.hpp>

std::string face_cascade = "C:\\opencv\\data\\haarcascades\\haarcascade_frontalface_alt.xml";

std::vector<cv::Rect> detectFaces(cv::Mat gray){

cv::ocl::oclMat oclGray;
std::vector<cv::Rect> faces;
cv::ocl::OclCascadeClassifier face_detector;

oclGray.upload(gray);
face_detector.load(face_cascade);

face_detector.detectMultiScale(oclGray, faces, 1.1, 3, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30, 30), cv::Size(0, 0));
return faces;
}

int main(){

cv::VideoCapture webcam;
cv::Mat mainImage;
std::vector<cv::Rect> faces;

webcam.open(0);
cv::namedWindow("face",CV_WINDOW_AUTOSIZE);

while(webcam.isOpened()){
webcam.read(mainImage);
if(!mainImage.empty()){
cv::resize(mainImage,mainImage,cv::Size(640,480),0,0,1);
cv::Mat gray(mainImage);
cv::cvtColor(gray,gray,CV_BGR2GRAY);
cv::equalizeHist(gray,gray);
faces = detectFaces(gray);

for(unsigned int i=0;i<faces.size();i++){
cv::Rect f_rect = faces[i];
cv::rectangle(mainImage,f_rect,CV_RGB(255,0,0),1,8,0);
}
cv::imshow("face",mainImage);
}
cv::waitKey(40);
}
return 0;
}

我对普通级联分类器的速度不满意,因此编码为基于 Ocl 的分类器。程序启动但显示错误信息:

enter image description here

我已经安装了APP SDK v 2.9.1我正在使用 Visual Studio 2012 速成版,Opencv 2.4.10我哪里出错了??

谢谢

编辑>>

cv::ocl::oclMat oclGray; 
oclGray.upload(gray);

上面的代码导致了错误..

最佳答案

看起来它在这一行 face_detector.load(face_cascade); 上失败了(使用调试器来确保我是正确的)。请确保路径正确且级联文件格式有效,您也可以尝试使用不同的级联,当然请确保正确安装和配置了 OCL。

关于c++ - 使用 OCL 进行人脸检测 (OPENCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29179738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com