windows8.1 64位 vs2013 opencv248
code:
#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
#pragma comment(linker, " /subsystem:\"windows\" /entry:\"mainCRTStartup\" ")
using namespace std;
using namespace cv;
int main()
{
Mat src_mat = imread("pp.jpg");
Mat gray_mat;
cvtColor(src_mat, gray_mat, CV_BGR2GRAY);
cvSaveImage("gray_mat.jgp", gray_mat);
imshow("原图", src_mat);
imshow("灰度图", gray_mat);
waitKey();
return 0;
}
----- 已启动生成: 项目: lena, 配置: Debug Win32 ------
1> 源.cpp
1>c:\users\labpc-user\documents\visual studio 2013\projects\lena\lena\源.cpp(15): error C2664: “int cvSaveImage(const char *,const CvArr *,const int *)”: 无法将参数 2 从“cv::Mat”转换为“const CvArr *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
请各位朋友帮忙!
11 个解决方案
#1
这个应该很明显吧 函数调用的时候实参与形参的类型不符 把gray_mat的类型改为能匹配const CvArr *的类型即可。
#2
不是很明白啊,怎么改???
#3
只有8位单通道或者3通道可以使用这个函数保存,如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换.
#4
我在网上找了好多,全是这个。亲,能给个样例吗?!
#5
用imwrite不行吗
#6
Mat不能直接这样写,要看你的opencv版本,里面对应的图像类型不同
#7
请问楼主这个问题解决了吗?碰到了同样的问题
#8
使用imwrite试试
#9
SaveImage是适用于IplImage的,imwrite应该可以
#10
后五行改为以下:
IplImage* pImage ;
pImage = &IplImage (gray_mat);
cvSaveImage("gray_mat.jgp",pImage );
imshow("原图", src_mat);
imshow("灰度图", gray_mat);
waitKey();
return 0;
IplImage* pImage ;
pImage = &IplImage (gray_mat);
cvSaveImage("gray_mat.jgp",pImage );
imshow("原图", src_mat);
imshow("灰度图", gray_mat);
waitKey();
return 0;
#11
cvsaveimage 是IPlimage指针的函数;
对于 Mat类 ,存储直接用imwrite 函数就行了
也就是说把cvSaveImage("gray_mat.jgp", gray_mat); 这一个改成imwrite("gray_mat.jgp", gray_mat);
当然也可以在mat和Iplimage之间进行转换 具体可以百度一下两者的区别
对于 Mat类 ,存储直接用imwrite 函数就行了
也就是说把cvSaveImage("gray_mat.jgp", gray_mat); 这一个改成imwrite("gray_mat.jgp", gray_mat);
当然也可以在mat和Iplimage之间进行转换 具体可以百度一下两者的区别
#1
这个应该很明显吧 函数调用的时候实参与形参的类型不符 把gray_mat的类型改为能匹配const CvArr *的类型即可。
#2
不是很明白啊,怎么改???
#3
只有8位单通道或者3通道可以使用这个函数保存,如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换.
#4
我在网上找了好多,全是这个。亲,能给个样例吗?!
#5
用imwrite不行吗
#6
Mat不能直接这样写,要看你的opencv版本,里面对应的图像类型不同
#7
请问楼主这个问题解决了吗?碰到了同样的问题
#8
使用imwrite试试
#9
SaveImage是适用于IplImage的,imwrite应该可以
#10
后五行改为以下:
IplImage* pImage ;
pImage = &IplImage (gray_mat);
cvSaveImage("gray_mat.jgp",pImage );
imshow("原图", src_mat);
imshow("灰度图", gray_mat);
waitKey();
return 0;
IplImage* pImage ;
pImage = &IplImage (gray_mat);
cvSaveImage("gray_mat.jgp",pImage );
imshow("原图", src_mat);
imshow("灰度图", gray_mat);
waitKey();
return 0;
#11
cvsaveimage 是IPlimage指针的函数;
对于 Mat类 ,存储直接用imwrite 函数就行了
也就是说把cvSaveImage("gray_mat.jgp", gray_mat); 这一个改成imwrite("gray_mat.jgp", gray_mat);
当然也可以在mat和Iplimage之间进行转换 具体可以百度一下两者的区别
对于 Mat类 ,存储直接用imwrite 函数就行了
也就是说把cvSaveImage("gray_mat.jgp", gray_mat); 这一个改成imwrite("gray_mat.jgp", gray_mat);
当然也可以在mat和Iplimage之间进行转换 具体可以百度一下两者的区别