图像的加载+修改+显示

Posted 寂寞的小乞丐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像的加载+修改+显示相关的知识,希望对你有一定的参考价值。

去年就学过一段时间Opencv,不过长时间不用就生疏了,现在学习加记录一些,加深印象的同时也可以加深理解。

1 imread()//图片载入
2 cvtcolor()//图片修改颜色---新版本
3 cvcvtcolor()//图片修改颜色---旧版本
4 imshow()//图片显示
5 imwrite()//图片保存

旧版本:运行奔溃,最好别用老版本的函数,数据转换太麻烦

 1 #include<iostream>
 2 #include <opencv2/highgui/highgui.hpp>
 3 //#include <opencv2/opencv.hpp>//
 4 using namespace cv;
 5 int main(int argc,char**argv)
 6 {
 7     Mat input_image = imread("9.jpg");
 8     namedWindow("test",WINDOW_AUTOSIZE);
 9     if (input_image.empty()) return -1;
10     imshow("test",input_image);
11     waitKey(0);
12     const CvArr*src = (CvArr*)&input_image;//Mat->CvArr
13     CvArr *output_image = &src;
14     namedWindow("output", WINDOW_AUTOSIZE);
15     cvCvtColor(src, output_image,CV_BGR2GRAY);//这里老是奔溃,原因应该是格式不匹配,看源代码的Assert处编译不通过
16 
17     //Mat m = cvarrToMat(output_image, true);//Mat->CvArr
18 19 //imshow("output", m); 20 waitKey(0); 21 return 0; 22 }

新版本:很简单的编译通过

 1 #include<iostream>
 2 #include <opencv2/opencv.hpp>
 3 using namespace cv;
 4 int main(int argc,char**argv)
 5 {
 6     Mat input_image = imread("9.jpg");
 7     namedWindow("test",WINDOW_AUTOSIZE);
 8     if (input_image.empty()) return -1;
 9     imshow("test",input_image);
10     waitKey(0);
11     Mat output_image;
12     cvtColor(input_image,output_image,CV_BGR2GRAY);
13     namedWindow("output", WINDOW_AUTOSIZE);
14     imshow("output", output_image);
15     waitKey(0);
16     return 0;
17 }

源代码:旧代码转换格式之后直接调用新代码Mat类,所以根本没必要用旧代码了

1 cvCvtColor( const CvArr* srcarr, CvArr* dstarr, int code )
2 {
3     cv::Mat src = cv::cvarrToMat(srcarr), dst0 = cv::cvarrToMat(dstarr), dst = dst0;
4     CV_Assert( src.depth() == dst.depth() );
5 
6     cv::cvtColor(src, dst, code, dst.channels());
7     CV_Assert( dst.data == dst0.data );
8 }

以上是关于图像的加载+修改+显示的主要内容,如果未能解决你的问题,请参考以下文章

音频处理Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )

分享前端开发常用代码片段

收藏|分享前端开发常用代码片段

关于js----------------分享前端开发常用代码片段

当片段视图加载是异步任务的一部分时,如何在片段加载之前显示进度条?

js 常用代码片段