opencv如何将彩色图转换为灰度图并保存灰度图

Or_me 2014-09-05 06:24:02
enviroment:
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 个 ==========
请各位朋友帮忙!
...全文
16421 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28533199 2016-10-10
  • 打赏
  • 举报
回复
cvsaveimage 是IPlimage指针的函数; 对于 Mat类 ,存储直接用imwrite 函数就行了 也就是说把cvSaveImage("gray_mat.jgp", gray_mat); 这一个改成imwrite("gray_mat.jgp", gray_mat); 当然也可以在mat和Iplimage之间进行转换 具体可以百度一下两者的区别
momo_snow 2016-01-07
  • 打赏
  • 举报
回复
后五行改为以下: IplImage* pImage ; pImage = &IplImage (gray_mat); cvSaveImage("gray_mat.jgp",pImage ); imshow("原图", src_mat); imshow("灰度图", gray_mat); waitKey(); return 0;
  • 打赏
  • 举报
回复
SaveImage是适用于IplImage的,imwrite应该可以
dongguaWDY 2015-07-02
  • 打赏
  • 举报
回复
使用imwrite试试
cultivating 2014-11-11
  • 打赏
  • 举报
回复
请问楼主这个问题解决了吗?碰到了同样的问题
xinxinran0808 2014-09-16
  • 打赏
  • 举报
回复
Mat不能直接这样写,要看你的opencv版本,里面对应的图像类型不同
jiangqr1991 2014-09-11
  • 打赏
  • 举报
回复
用imwrite不行吗
Or_me 2014-09-10
  • 打赏
  • 举报
回复
引用 3 楼 ganruan 的回复:
只有8位单通道或者3通道可以使用这个函数保存,如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换.
我在网上找了好多,全是这个。亲,能给个样例吗?!
ganruan 2014-09-08
  • 打赏
  • 举报
回复
只有8位单通道或者3通道可以使用这个函数保存,如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换.
Or_me 2014-09-08
  • 打赏
  • 举报
回复
引用 1 楼 ganruan 的回复:
这个应该很明显吧 函数调用的时候实参与形参的类型不符 把gray_mat的类型改为能匹配const CvArr *的类型即可。
不是很明白啊,怎么改???
ganruan 2014-09-07
  • 打赏
  • 举报
回复
这个应该很明显吧 函数调用的时候实参与形参的类型不符 把gray_mat的类型改为能匹配const CvArr *的类型即可。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧