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

问题描述 投票:1回答:2

我相对来说是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++ opencv image-processing
2个回答
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;
}

0
投票

如果cvSaveImage()不起作用,最好像cvCopyImage一样删除它:)

© www.soinside.com 2019 - 2024. All rights reserved.