问题描述
当代码到达以下行时,我在opencv中的人脸识别器中获取访问冲突写入位置:model-> train(images,labels);
I get access violation writing location in face recognizer in opencv when the code getting to this line: model->train(images, labels);
错误:WHomeCamera.exe中0x00007FF9B494321B(opencv_core331.dll)的未处理异常:0xC0000005:访问冲突写入位置0x0000000100000014.发生
the error:Unhandled exception at 0x00007FF9B494321B (opencv_core331.dll) in WHomeCamera.exe: 0xC0000005: Access violation writing location 0x0000000100000014. occurred
#include <opencv2\opencv.hpp>
#include <opencv2\highgui.hpp>
#include <opencv2\objdetect.hpp>
#include <opencv2\core.hpp>
#include <opencv2\face.hpp>
#include <opencv2\imgcodecs.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;
using namespace face;
int main(void)
{
vector <Mat> images; // vector of matrix for the images of the faces;
vector <int> labels; // vector of int's for the labes (each person get label ex: moshe - 0);
try
{
images.push_back(imread("D:\imagesForProject\1.jpg", CV_LOAD_IMAGE_GRAYSCALE)); // insert the face image;
labels.push_back(0); // insert his label;
images.push_back(imread("D:\imagesForProject\2.jpg", CV_LOAD_IMAGE_GRAYSCALE)); // insert the face image;
labels.push_back(0); // insert his label;
images.push_back(imread("D:\imagesForProject\3.jpg", CV_LOAD_IMAGE_GRAYSCALE)); // insert the face image;
labels.push_back(0); // insert his label;
}
catch(Exception& e)
{
cerr << "can't open the images" << e.msg << endl; // if we couldn't open the files cerr it's basic cout for errors;
}
Ptr<FaceRecognizer> model = FisherFaceRecognizer::create();
model->train(images, labels);
return(0);
}
推荐答案
OpenCV 3.3
由我自己在Ubuntu 16.04
上使用G++ 5.4
构建.
OpenCV 3.3
built by myself using G++ 5.4
on Ubuntu 16.04
.
此代码对我有用. Do not ask me why
,您should
找到差异by yourself
.
This code works for me. Do not ask me why
, you should
find the difference by yourself
.
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/core.hpp>
#include <opencv2/face.hpp>
#include <opencv2/imgcodecs.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;
using namespace face;
int main(void)
{
vector <Mat> images; // vector of matrix for the images of the faces;
vector <int> labels; // vector of int's for the labes (each person get label ex: moshe - 0);
try{
images.push_back(imread("Pictures/test0.png", CV_LOAD_IMAGE_GRAYSCALE)); // insert the face image;
labels.push_back(0); // insert his label;
images.push_back(imread("Pictures/test1.png", CV_LOAD_IMAGE_GRAYSCALE)); // insert the face image;
labels.push_back(1); // insert his label;
}catch(Exception& e){
cerr << "can't open the images" << e.msg << endl; // if we couldn't open the files cerr it's basic cout for errors;
}
Ptr<FaceRecognizer> model = FisherFaceRecognizer::create();
model->train(images, labels);
model->save("xxx.xml");
return(0);
}
这篇关于opencv中的访问冲突写入位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!