-1

我有以下代码:

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);
    }
}

它会产生错误。我认为这是因为我没有转换IplImageofImage. 有人可以告诉我该怎么做吗?

4

1 回答 1

0

我想你的 img 实例,你传递给 f() 的实例是 ofxCVImage 或类似的实例。据我所知,ofx 存储了一个受保护的 iplimage 变量,因此您不能将 ofxCVImage 转换为 iplimage。

你可以试试

img = f(img.getCvImage()) // ofxCvImage::getCvImage() returns IplImage
于 2013-02-11T17:27:47.157 回答