在opencv中将Mat转换为iplimage * [英] converting Mat to iplimage* in opencv

查看:437
本文介绍了在opencv中将Mat转换为iplimage *的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是opencv和c ++的新手. iplimage和iplimage *有什么区别? 我在arg [1]中使用了需要iplimage *的cvHaarDetectObjects.我有一个垫子格式的框架.如何将Mt转换为iplimage *? (我找到了一种将mat转换为iplimage但不能转换为iplimage *的方法.)

I am new in opencv and c++. what is the difference between iplimage and iplimage*? I used cvHaarDetectObjects that need iplimage* in arg[1]. I have a frame in the format of Mat. how could I convert Mt to iplimage*? (I found a way to convert mat to iplimage but not to iplimage*).

真正的一个是:

iplimage* frame=cvLoadImage("1.jpg");
objects = cvHaarDetectObjects( frame, face_cascade, storage, scale_factor, 1 );


但我想使用:


but I want to use:

Mat frame;
//some functions are performed on frame
objects = cvHaarDetectObjects( frame, face_cascade, storage, scale_factor, 1 );

推荐答案

IplImage *是指向图像数据结构IplImage的指针.它用于opencv的C API.

IplImage* is a pointer to the image data structure IplImage. It is used in C API of opencv.

opencv 2.0之后,引入了C ++ API,"Mat"结构取代了IplImage.

After opencv 2.0, C++ API is introduced, and "Mat" structure replaced IplImage.

C API函数接受IplImage *而不是IplImage,并且C ++ API函数接受Mat.

C API functions accept IplImage* instead of IplImage, and C++ API functions accept Mat.

两种解决方案:

Mat frame;
// apply pre-processing functions
IplImage* frame2 = cvCloneImage(&(IplImage)frame);
objects = cvHaarDetectObjects(frame2, face_cascade, storage, scale_factor, 1 );

OR

使用 C ++ API函数接受& frame,并与haardetectobjects做同样的工作.

use C++ API function accepting &frame, doing same job with haardetectobjects.

这篇关于在opencv中将Mat转换为iplimage *的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆