OpenCV用Mat替换IplImage

时间:2014-02-14 11:46:11

标签: c++ opencv matrix mat iplimage

我使用OpenCV检测多个图像中的面部,然后将面部图像(矩形)保存为jpg文件。但是因为我有很多图像,所以我得到OpenCV错误,我的内存不足。我知道这是因为使用了IplImage并没有释放自己而我应该使用cv::Mat代替,但是我无法找到解决我想要使用{{1 }}。有人可以帮忙吗?

这是我的代码

cv::Mat

3 个答案:

答案 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++;
}