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. javabean与map互转

    /**     * 将一个 JavaBean 对象转化为一个  Map     * @param bean 要转化的JavaBean 对象     * @return 转化出来的  Map 对象  * ...

  2. C# --2007Access链接字符串

    public static string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDi ...

  3. screen命令学习

    我们有时需要做一些长时间的工作,比如格式化一个20T的raid磁盘,可能需要几个小时以上,如果只是执行格式化的话,由于网络不稳定,或者要下班了,还没格式化完成,关闭了ssh的窗口,命令可能就执行失败了 ...

  4. asp.net treeview 异步加载

    在使用TreeView控件的时候,如果数据量太大,这个TreeView控件加载会很慢,有时甚至加载失败, 为了更好的使用TreeView控件加载大量的数据,采用异步延迟加载TreeView. 在Tre ...

  5. Java基础之写文件——使用多个视图缓冲区(PrimesToFile2)

    控制台程序.本例将对应于每个素数的数据以三个连续数据项的形式写入: 1.以二进制值表示的字符串长度值(最好是整型,但本例使用double类型): 2.素数值的字符串表示”Prime=nnn“,其中数字 ...

  6. hibernate主键生成机制与save返回

    主键生成机制为assigned时,save之后通过get得不到id(主键),使用identity可以. hibernate主键生成机制1) assigned主键由外部程序负责生成,无需Hibernat ...

  7. 一步一步学习Swift之(四)玩转UIWebView

    实现原理: 1.通过UIWebView的stringByEvaluatingJavaScriptFromString方法来触发脚本 2.通过自定义连接来触发oc代码 实现过程 @IBOutlet we ...

  8. 如何为 Eclipse 中的 Java 源文件设置为 UTF-8 默认编码(转)

    要让一个 Java 源文件打开时编码格式为 UTF-8,需要做2件事情: 1)设置Java 源文件的默认编码格式为UTF-8: 2)设置workspace的编码格式为UTF-8. 相应设置如下: 设置 ...

  9. 从一个小项目看return 引用 重载运算符

    #ifndef _ARRAY_H_ #define _ARRAY_H_ class Array { private: int mLength; int* mSpace; public: Array(i ...

  10. URAL 1001 Reverse Root(水题?)

    The problem is so easy, that the authors were lazy to write a statement for it! Input The input stre ...