我有以下代码:
IplImage* f( IplImage* src )
{
// Must have dimensions of output image
IplImage* cropped = cvCreateImage( cvSize(1280,500), src->depth, src->nChannels );
// Say what the source region is
cvSetImageROI( src, cvRect( 0,0, 1280,500 ) );
// Do the copy
cvCopy( src, cropped );
cvResetImageROI( src );
return cropped;
}
void testApp::setup(){
img.loadImage("test.jpg");
finder.setup("haarcascade_frontalface_default.xml");
finder.findHaarObjects(img);
}
//--------------------------------------------------------------
void testApp::update(){
}
//--------------------------------------------------------------
ofRectangle cur;
void testApp::draw(){
img = f(img);
img.draw(0, 0);
ofNoFill();
for(int i = 0; i < finder.blobs.size(); i++) {
cur = finder.blobs[i].boundingRect;
ofRect(cur.x-20, cur.y-20, cur.width+50, cur.height+50);
}
}
它会产生错误。我认为这是因为我没有将IplImage
转换为ofImage
。有人可以告诉我该怎么做吗?
答案 0 :(得分:0)
我会想象你传递给f()的你的img实例是ofxCVImage或类似的实例。据我所知,存储一个受保护的iplimage变量,因此你无法将xCVImage转换为iplimage。
您可以尝试
img = f(img.getCvImage()) // ofxCvImage::getCvImage() returns IplImage