我使用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);
,则不会出现错误。有什么问题?
答案 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();
}