在opencv中将Mat转换为iplimage * [英] converting Mat to iplimage* in opencv
问题描述
我是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屋!