我是一个新的开放简历,只是做一些实验与教程,以便找出有关该库的用法和功能的一些信息,在已经放置在Open CV官方的教程之一网站上有一段代码,用于检测网络摄像头上某些训练面孔和面部预测,Face Recognition in videos
现在我正在尝试修改代码,以便使用本地数据库中保存的图片,并在检测到的面上给出相同的输出矩形和上面的标签,我修改了代码(在第88行之后)以这种方式教程中提到的代码:
CascadeClassifier haar_cascade;
haar_cascade.load(fn_haar);
for(;;) {
Mat gray;
Mat original;
gray = imread("F:\datasets\23.jpg",0);
original = imread("F:\datasets\23.jpg");
vector< Rect_<int> > faces;
haar_cascade.detectMultiScale(gray, faces);
for(int i = 0; i < faces.size(); i++) {
Rect face_i = faces[i];
Mat face = gray(face_i);
Mat face_resized;
cv::resize(face, face_resized, Size(im_width, im_height), 1.0, 1.0, INTER_CUBIC);
// predict:
int prediction = model->predict(face_resized);
// visualize:
rectangle(original, face_i, CV_RGB(0, 255,0), 1);
string box_text = format("Prediction = %d", prediction);
int pos_x = std::max(face_i.tl().x - 10, 0);
int pos_y = std::max(face_i.tl().y - 10, 0);
putText(original, box_text, Point(pos_x, pos_y), FONT_HERSHEY_PLAIN, 1.0, CV_RGB(0,255,0), 2.0);
}
// Show the result:
imshow("face_recognizer", original);
// And display it:
char key = (char) waitKey(20);
// Exit this loop on escape:
if(key == 27)
break;
}
但是当我执行代码时,它报告“未知函数中的OpenCV错误:错误标志(参数或结构字段)(无法识别或不支持的数组类型)”任何人都可以帮助我解决并解决代码中的错误请?
答案 0 :(得分:3)
调整您的图片路径,应为"F:\\datasets\\23.jpg" or "F:/datasets/23.jpg"
(文件名中的单个反斜杠有些问题,使用2或避免它们)
对于未来,错误是空的或无效的垫子的症状,所以检查你加载的任何ressource是必须的。像:
gray = imread("F:/datasets/23.jpg",0);
if ( gray.empty() )
{
cerr << "could not load it!";
return -1;
}
级联相同:
if ( ! haar_cascade.load(fn_haar) )
{
//...
}