我使用OpenCV检测多个图像中的面部,然后将面部图像(矩形)保存为jpg文件。但是因为我有很多图像,所以我得到OpenCV错误,我的内存不足。我知道这是因为使用了IplImage
并没有释放自己而我应该使用cv::Mat
代替,但是我无法找到解决我想要使用{{1 }}。有人可以帮忙吗?
这是我的代码
cv::Mat
答案 0 :(得分:2)
以下行裁剪矩形并复制到垫子类型。
Mat cropped = captureframe(faces[i]);
以下行将裁剪后的图像保存到项目目录中,名称为存储在counter(int type)中的数字。
imwrite( format("%d.jpg", counter), cropped );
如果您正在训练识别器,请不要忘记在保存之前将所有图像调整为相同的大小。
答案 1 :(得分:1)
你看到这个页了吗?:
How to convert a Mat variable type
OpenCV C++ interface
OpenCV: IplImage versus Mat
converting Mat to iplimage
up url's也许有你的答案......
答案 2 :(得分:1)
好主意摆脱iplimages!
看,它也变得容易了:
for(size_t i = 0; i < faces.size(); i++)
{
Mat roi(captureFrame, faces[i]);
std::stringstream sstm;
sstm << "faces\\" <<counter << ".jpg";
string result = sstm.str();
imwrite(result.c_str() , roi);
counter++;
}