图像的加载+修改+显示

去年就学过一段时间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 }
时间: 2024-10-22 23:32:53

图像的加载+修改+显示的相关文章

数字图像处理 CImage类的使用与封装(jpg png gif tif bmp等格式图像的加载、数据读写、保存等功能)

引入CImage类的原因 原有的CBitmap 类只能处理BMP格式的图片,非常受限.而CImage可以处理JPGE.GIF.BMP.PNG等多种格式图片,扩展了图片处理功能且能与CBitmap 进行转换( 因为所载入的位图句柄都是HBITMAP,所以可相互转换),因此引入CImage类进行图像处理. CImage类简介 CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG.GIF.BMP和PNG格式的图像文件加以显示,而且这些文件格式可以相互转换. CImage提供增强型的

Android 图像异步加载之Android-Universal-Image-Loader

概述: 项目地址:https://github.com/nostra13/Android-Universal-Image-Loader UIL(Universal-Image-Loader)异步图像加载.缓存和显示.这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影. 同类类库(Picasso),尽管Picasso拥有更好的API,但其缺乏自定义.而使用UIL构建器几乎可以配置所有(其中最重要的就是在抓取和缓存大型图

lufylegend:图片的加载和显示

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <script type="text/javascript" src="../lufylegend-1.7.6.min.js"></script> </head> <body> <div id="mylegend"&g

从代码分析Android-Universal-Image-Loader的图片加载、显示流程

从UNIVERSAL IMAGE LOADER. PART 3(四个DisplayImage重载方法详解)中,我们学习了Android-Universal-Image-Loader(以下简称UIL)中四个DisplayImage重载方法的使用,如果你还没有学习,最好先返回去看看,不然可能不理解这篇文章.在这篇文章中我们将主要探讨Android-Universal-Image-Loader的主要流程和这些流程相关的类的分析. 我们先了解一下UIL加载图片的流程(可以通过查看ImageLoader.

IOS嵌套界面下 -UIWebView加载网页显示不全(尺寸适应问题)

最近有个朋友碰到一个关于在嵌套界面下UIWebView加载网页显示不全的问题 咋一看这种问题太easy了.但是不要忽视其背后的真正黑手,现在拿百度首页做个实验(百度就是这点好)先贴上一小段核心代码: 显示效果: 看到没 显示不全.现在你会说快用大招: 解决它.可惜这招也不行. 原因分析:为什么会显示不全呢? 主要问题就出在前面说的关于在嵌套界面下. 可为什么在嵌套界面下就不行呢? 显示不全是个问题. 是的 是个问题而且是个显示界面尺寸不匹配的问题.可在主界面就这可以, 而且frame我都是用的s

js图片未加载完显示loading效果

<html> <title>js图片未加载完显示loading效果</title> <body> <style> img{float:left;width:200px;height:200px;margin:0 10px 10px 0} </style> <script> //判断浏览器 var Browser=new Object(); Browser.userAgent=window.navigator.userAge

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了,导致出错.后来使用此法,保证了任何时候都完全是按照js的先后顺序执行的. 源码: /** * js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 * 原理:利用 ajax 异步多线程快速加载, 每个文件加载完成后存入到加载完成数组中, * 显示到页面时完全按传入的顺

OpenCV入门:(二:加载,显示,修改以及保存图片)

目标: 1.从图片文件打开图片(imread) 2.显示图片(namedWindow和imshow) 3.转换当前图片为灰色图片(cvtColor) 4.保存图片(imwrite) 代码: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <iostream> using namespac

openCV—Python(1)—— 加载、显示和保存图像

一.函数简介 1.imread 函数原型:imread(filename, flags=None) filename:读取的图像路径名:例如:"H:\img\lena.jpg". flags:彩色图or灰色图,1:表示彩色图:0:表示灰色图. 2.imshow 函数原型:imshow(winname, mat) winname:窗口名字:例如:"Lena". mat:要显示的图像矩阵. 3.imwrite 函数原型:imwrite(filename, img, pa