opencv识别自己的脸摄像头调用失败

没拿过奖学金的程序员 2017-09-21 10:40:09
我在尝试一个摄像头识别已经训练好的xml文件,但是调用摄像头的时候出现问题,我调用摄像头的代码就是最简单的初始化:
#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main(){
VideoCapture cap(0); //打开默认摄像头
if(!cap.isOpened()){
return -1;
}
Mat frame;
Mat edges;
Mat gray;

CascadeClassifier cascade;
bool stop =false;
cascade.load("haarcascade_frontalface_alt.xml");

Ptr<FaceRecognizer>modelPCA = createEigenFaceRecognizer();
modelPCA->load("MyFacePCAModel.xml");

while(!stop)
{
cap>>frame;
vector<Rect> faces(0);
cvtColor(frame,gray,CV_BGR2GRAY);
equalizeHist(gray,gray);//直方图均值化

cascade.detectMultiScale(gray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE,Size(30,30));

Mat face;
Point text_lb;

for(size_t i=0;i<faces.size();i++)
{
if(faces[i].height>0&&faces[i].width>0)
{
face=gray(faces[i]);
text_lb=Point(faces[i].x,faces[i].y);
rectangle(frame,faces[i],Scalar(255,0,0),1,8,0);

}
}
Mat face_test;

int predictPCA=0;
if(face.rows>=120)
{
resize(face,face_test,Size(92,112));
}
if(!face_test.empty())
{
predictPCA=modelPCA->predict(face_test);
}
cout<<predictPCA<<endl;
if(predictPCA==35)
{
string name="shijunye";
putText(frame,name,text_lb,FONT_HERSHEY_COMPLEX,1,Scalar(0,0,255));
}
imshow("face",frame);
if(waitKey(50)>=0)
stop=true;
}
return 0;
}

这是我全部的代码,运行没有报错,但是最后出来这个画面:

求知道的大神能告知问题所在。
提前感谢。
...全文
382 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-10-09
  • 打赏
  • 举报
回复
有的笔记本打开摄像头还得拨一个小DIP开关。
Goerge_L 2017-10-04
  • 打赏
  • 举报
回复
从你这个运行的效果来看,打开摄像头的代码是执行了的。你也可以验证一下,在if(!cap.isOpened()){return -1; }这里把return-1换成你能直接看到的现象比如输出一行文字什么的,来判断摄像头到底有没有打开。如果摄像头打开了但是结果依然是这样的话就要考虑是不是你摄像头的问题了。
赵4老师 2017-09-21
  • 打赏
  • 举报
回复
建议楼主先编译链接调试OpenCV自带的相关例子代码。
沐阳2100 2017-09-21
  • 打赏
  • 举报
回复
你可以使用别的软件打开摄像头,看看摄像头是否安装正确,QQ之类的都可以

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧