Я использую визуальную студию 2012 с opencv 3.0. я уже проверил несколько постов об этой проблеме, но до сих пор я получаю утверждение не удалось ошибка -215, когда я запускаю этот код:Утверждение не выполнено ROI opencv
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);
я не получаю сообщение об ошибке. В чем проблема?
Вы уверены, что ваша ширина и высота не менее 10. Если они, то есть эффективная высота и ширина для обрезанной области будут меньше или равны 0, а это, возможно, почему вы видите ошибку утверждения. –
Вы проверили для nullptr во всех своих нагрузках/созданиях? если ширина равна 0, вы получаете -10 в вашем текущем коде. – Surt
Почему вы не играете с cvRect вообще, измените третий и четвертый параметры и посмотрите, в какой момент вы получите сообщение об ошибке. Удалите все остальные коды. Попробуйте cvRect (0, 0, 100, 100); затем cvRect (0, 0, 200, 200); так что –