使用cvSaveImage的OpenCV C ++错误错误:断言失败((flags& FIXED_TYPE)!= 0)在cv :: _ InputArray :: type中

时间:2018-03-31 11:31:04

标签: c++ opencv image-processing

我相对来说是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);
}

2 个答案:

答案 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一样删除它:)