我相对来说是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);
}
答案 0 :(得分:1)
您使用的是已弃用的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;
}
答案 1 :(得分:0)
如果cvSaveImage()无法正常工作,最好像cvCopyImage一样删除它:)