我相对来说是OpenCV的新手。在这种情况下,我尝试在进行一些处理后使用cvSaveImage保存图像,但是抛出了这个错误
断言失败((flags&FIXED_TYPE)!= 0)在cv :: _ InputArray :: type中,文件C:\ build \ master_winpack-build-win64-vc14 \ opencv \ modules \ core \ src \ matrix_wrap.cpp,第807行
看来,就像输入数组的类型有一些问题,但我不明白为什么?
这是我的代码的样子
int main(int argc, char** argv) {
IplImage* img = cvLoadImage("HOLES_CAM1_NG.bmp", CV_LOAD_IMAGE_GRAYSCALE);
IplImage* houghImg = cvCloneImage(img);
/*
SOME PROCESSING
*/
cvSaveImage("HOLES_CAM1_NG_processed.png", houghImg);
cvReleaseImage(&img);
cvReleaseImage(&houghImg);
}
您正在使用已弃用的C API。
请尝试做这样的事情:参考:https://docs.opencv.org/2.4/doc/tutorials/introduction/load_save_image/load_save_image.html
#include <cv.h>
#include <highgui.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>
using namespace cv;
int main( int argc, char** argv )
{
Mat img;
img = imread( "HOLES_CAM1_NG.bmp", CV_LOAD_IMAGE_GRAYSCALE );
if(!img.data )
{
printf( " No image data \n " );
return -1;
}
/*
SOME PROCESSING
*/
imwrite( "HOLES_CAM1_NG_processed.png", houghImg );
namedWindow( "Original image", CV_WINDOW_AUTOSIZE );
namedWindow( "Gray image", CV_WINDOW_AUTOSIZE );
imshow( "Original image", img );
imshow( "Hough image", houghImg );
waitKey(0);
return 0;
}
如果cvSaveImage()不起作用,最好像cvCopyImage一样删除它:)