簡體   English   中英

在opencv中將Mat轉換為iplimage *

[英]converting Mat to iplimage* in opencv

我是opencv和c ++的新手。 iplimage和iplimage *有什么區別? 我在arg [1]中使用了需要iplimage *的cvHaarDetectObjects。 我有一個Mat格式的框架。 如何將Mt轉換為iplimage *? (我找到了一種將mat轉換為iplimage而不是iplimage *的方法)。

真正的一個是:

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

但我想使用:

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

IplImage *是圖像數據結構IplImage的指針。 它在opencv的C API中使用。

在opencv 2.0之后,引入了C ++ API,“ Mat”結構取代了IplImage。

C API函數接受IplImage *而不是IplImage,而C ++ API函數接受Mat。

兩種解決方案:

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

要么

使用接受&frame的C ++ API函數 ,對haardetectobjects做同樣的工作。

如果您已經具有Mat格式的圖像,則應嘗試此函數調用

void CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size());

從Canberk的答案中的鏈接

或嘗試這個

IplImage iplframe = IplImage( frame );
objects = cvHaarDetectObjects( &iplframe, face_cascade, storage, scale_factor, 1 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM