断言ROI opencv失败

时间:2014-09-29 16:26:53

标签: c++ opencv assertion roi

我使用visual studio 2012和opencv 3.0。 我已经检查了几个关于这个问题的帖子,但是当我运行这段代码时,我仍然得到断言失败错误-215:

IplImage * imageOriginal = cvLoadImage("road1.jpg");

int width = 0, height = 0;    
width = imageOriginal->width;
height = imageOriginal->height;
IplImage* img = cvCreateImage(cvGetSize(imageOriginal), imageOriginal->depth , 3);    

CvRect cropRect = cvRect(0, 0, width -10, height -10 ); // ROI in source image 

cvSetImageROI(imageOriginal, cropRect);

try {
  cvCopy(imageOriginal, img, NULL); // Copies only crop region
}
catch (cv::Exception& e) {
  cout << e.what() << endl;
}
cvResetImageROI(imageOriginal);
cvShowImage( "Original ROI", img);
waitKey();

如果我将矩形保留为全尺寸CvRect cropRect = cvRect(0, 0, width, height);,则不会出现错误。有什么问题?

1 个答案:

答案 0 :(得分:0)

您的代码来自opencv1.0。 (那是很久以前的事了)

请为opencv3.0改为使用c ++ api:

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;

int main() {
    Mat img = imread("road1.jpg");
    Mat roi = img(Rect(0,0,img.cols-10,img.rows-10));
    imshow("hi",roi);
    return waitKey();
}