1、声明一个表示图像的变量,在OpenCV2中,这个变量是cv::Mat类型,该类是用于保存图像以及其他矩阵数据的数据结构。默认情况下它们的尺寸为0。

cv::Mat  image;       //这句话将创建一个宽高都为0的图像;

通过调用cv::Mat 的size()方法可以获取该图像的尺寸,该方法的返回值是一个结构体,包含着宽度和高度;

std::cout<<"size:"<<image.size().height<<","<<image.size().width<<std::endl;

cv::Mat类是用于保存图像以及其他矩阵数据的数据结构。默认情况下它们的尺寸为0,但是也可以指定初始尺寸:

cv::Mat ima(240,320,CV_8U,cv::Scalar(100));

同时,你需要指定矩阵中元素的类型,这里的CV_8U对应的是单字节的像素图像。字母U意味着无符号的(Unsigned).也可以使用字母S声明带符号的(Signed)类型。对于彩色图像,需要指定3个通道(CV_8UC3)。也可以声明16位或32位的(无符号的或带符号的)整数图像,如CV_16SC3。也可声明32位或64位的浮点数,如CV_32F。

2、一个简单的读取函数将进行文件读取、解码以及内存的分配。

image = cv::imread("img.jpg");

在使用该图像前需要先检查图像是否已经被正确读取,如果文件不存在、文件损坏或者格式无法识别,将会出现错误。检验方法如下:

if(!image.data){

//图像尚未创建.......

}

此处的成员变量data事实上是指向已分配的内存块的指针,包括图像数据。当不存在数据时,它被简单设置为0.

3、显示图像,OpenCV的highgui模块实现了该功能。首先定义一个需要进行图像显示的窗口,接着指定需要显示的图像:

cv::namedWindow("Original Image");    //定义显示图像的窗口,参数为窗口名

cv::imshow("Original Image",image);    //显示图像

4、将图像水平反转。OpenCV中的多个图像变换可以在原地进行,即不创建新的图像,直接修改输入图像的内容。flip函数便是其中一种,然而,也可以创建另外一个矩阵来保存输出结果。

cv::Mat  result;

cv::flip(image,result,1);     //正数表示水平反转,0表示垂直反转,负数表示既有水平也有垂直反转

结果显示在另一个窗口中:

cv::namedWindow("Output Image");

cv::imshow("Output Image",result);

由于这是个控制台窗口,它会在main函数的结尾处终止,因此我们添加额外的highgui函数使得程序退出前不停等待用户的按键输入:

cv::waitKey(0);

5、将处理后的图像保存在磁盘上,通过下面的highgui函数得到实现:

cv::imwrite("output.bmp",result);

文件的后缀名决定了图像保存时的编码格式。

opencv载入,显示及保存图像的更多相关文章

  1. openCV—Python(2)—— 载入、显示和保存图像

    一.函数简单介绍 1.imread-读取图像 函数原型:imread(filename, flags=None) filename:读取的图像路径名:比如:"H:\img\lena.jpg& ...

  2. 利用python进行简单的图像处理:包括打开,显示以及保存图像

    利用python进行简单的图像处理:包括打开,显示以及保存图像 利用PIL处理 PIL(python image library) 是python用于图片处理的package.但目前这个package ...

  3. matlab数字图像处理-冈萨雷斯-读取,显示,保存图像

    图像读取:imread(filename) 显示图像‘ 显示多幅图像 保存图像 b 计算压缩比

  4. Opencv怎么读入,显示,保存图像-OpenCV步步精深

    怎么读入图像呢? 我们用 img = cv2.imread('图像路径\原图像名称',0) 原图像名称要有后缀 .png , .jpg等等原图像带有的后缀. 这里我们着重说明一下图像路径,这个路径一定 ...

  5. opencv 加载 修改 保存 图像

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; /* 1 加载图像 cv::imre ...

  6. [OpenCV笔记]0.OpenCV中显示多张图像

    摘要 本文主要介绍OpenCV中同时显示多张IplImage图像的方法(C++形式的多图显示需要修改,用vector<Mat>可能比较方便),有点类似MATLAB中的subplot,只是暂 ...

  7. OpenCV Python教程(1、图像的载入、显示和保存)

    原文地址:http://blog.csdn.net/sunny2038/article/details/9057415 转载请详细注明原作者及出处,谢谢! 本文是OpenCV  2 Computer ...

  8. OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图

    图像载入.显示.保存函数: 1         图像载入函数:imread()   Mat imread(const string& filename, int flags=1); const ...

  9. 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析(转)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20537737 作者:毛星云(浅墨)  ...

随机推荐

  1. YUM Installation PostgreSQL

    PostgreSQL can be installed using RPMs (binary) or SRPMs (source) managed by YUM. This is available ...

  2. [LeetCode]题解(python):048-Rotate Image

    题目来源 https://leetcode.com/problems/rotate-image/ You are given an n x n 2D matrix representing an im ...

  3. Top Five Communication Skills for Project Managers

    Research among project managers globally identifies top communication skills for leading teams. Lead ...

  4. java web filter 之一 基础实现

    本文主要对filter的基本使用进行了讲解,其中涉及到了 filter是什么 一个filter处理一个jsp 多个filter处理一个jsp filter是什么 Filter 是java下的一种过滤器 ...

  5. PHP的日期和时间

    <?php //2.获取日期和时间 //时间是一维的,所以任何一个时间的时间戳都是不一样的 //array getdate([int timestamp]); //string date(str ...

  6. Extjs4 获取到前一天的日期

    Extjs4 获取到前一天的日期 Extjs官方示例 Ext.Date add( date, interval, value ) : Date Provides a convenient method ...

  7. marathon参考(11):ports端口设置(转)

    Ports marathon中应用的端口配置可能被混淆,并有一个悬而未决的问题,需要重新设计 ports API.这个页面试图更清楚地解释它们是如何工作的. 定义 containerPort:在容器内 ...

  8. Android 退出app,后台推送的服务也停止了,怎么可以做到不停止后台服务呢?

    service粘性等的那4种方式试了,三星的可以,小米老款手机可以,新款不行,华为新款也不行,还有魅族什么的,都不行,新款的手机上都有一个安全中心,只有在安全中心里面添加上允许app自启动才可以 怎么 ...

  9. 数据库字段Pointer的操作方法

    多数情况下要要是Pointer字段实现了类似传统关系数据库的关联操作,联合查询能够减少提交次数,今天带来几种过滤器的使用方法: 首先确定2个Class,也就是表: A表:user表,用户个人信息,字段 ...

  10. C语言下WebService的使用方式

    用gSoap工具:      1.在dos环境中到gSoap工具对应的目录gsoap_2.8.18\gsoap-2.8\gsoap\bin\win32路径下,执行wsdl2h -c -o *.h ht ...