图像载入、显示、保存函数:

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

    const string&类型的filename为载入图像的路径(绝对路径和相对路径)

    flags是int类型的变量,flags>0,返回一个3通道的彩色图像;

flags = 0,返回灰度图像;

flags < 0,返回包含Alpha通道的加载图像。

    flags默认值为1,可以省略对其赋值。

例如:Mat srcImage = imread(‘1.jpg’);

2   图像显示函数:imshow()  void imshow(const string& winname, InputArray mat);

Const string&类型的winname为需要显示的窗口名称;

InputArray类型的mat,填需要显示的图像。

例如:imshow(‘图’,srcImage);

3       Mat类型是用于保存图像以及其他矩阵数据的数据结构,默认尺寸为0,也可以初始化尺寸。InputArray/outputArray在opnecv中和Mat类似都是一种数据格式,而很多时候,遇到函数原型中的InputArray/outputArray类型,可以把它简单的当做Mat类型。

4       输出图像到文件:imwrite()  bool imwrite(const string& filename,InputArray img, const vector<int> & params=vector<int> () );

const string& filename表示填写需要的文件名,需带上后缀,如“1.jpg”;

InputArray img表示要保存的图像数据;

const vector<int> & 类型的params,其默认值为vector<int> (),需要填写时有:

1.JPEG格式图片,参数为0-100,表示图像质量,默认为95;

2.PNG格式图片,参数为0-9,表示压缩级别,高值则表示更小尺寸和压缩时间更长;

3.PPM,PGM,PBM格式时,表示二进制格式标志,参数0或1,默认为1。

例如:imwrite(‘123.jpg’,dstImage);

基础图像容器Mat

5       使用Mat() 构造函数

Mat M(2,2,CV_8UC3,Scalar(0,0,255));表示创建2行2列,CV_8UC3表示使用8位的unsigned char型,每个像素由三个元素组成的三通道。另外,Scalar是个short型的向量,能使用指定的定制化来初始化矩阵,还可以表示颜色。

常用数据结构和函数

6       点表示:Point

    用法:Point point;

point.x = 10;

point.y = 8;

或者:Point point = point(10,8); 都表示为有x=10和y=8定位的2D点。

7       颜色的表示:Scalar

Scalar(a,b,c) 表示定义的RGB值为:红色分量为c,绿色分量为b,蓝色分量为a。这里取决于opnecv和matlab不同储存三通道颜色方式,matlab为RGB顺序,opnecv为BGR,也可以理解为两者相反。

8       矩形表示:Rect

Rect类的成员变量有x,y,width,height表示左上角点的坐标和矩形宽和高。其成员函数有:

Size()返回值为Size(尺寸大小),area()返回矩形的面积,contains(Point)判断点是否在矩形内,inside(Rect)判断矩形是否在该矩形内,tl()返回左上角点坐标,br()返回右下角点坐标。

Rect rect = rect1 & rect2; 两矩形交集

Rect rect = rect1 | tect2; 两矩形并集

Rect rectShift = rect + point; 矩形平移

Rect rectScale = rect + size; 矩形缩放

9       颜色空间转换:cvtColor()

其中RGB和Gray转换有:Opnecv2版本的CV_RGB2GRAY,CV_GRAY2RGB

Opencv3版本的COLOR_RGB2GRAY,COLOR_GRAY2RGB

RGB和HSV转换有:Opnecv2版本的CV_RGB2HSV,CV_BGR2HSV,CV_HSV2RGB,CV_HSV2BGR

Opencv3版本的COLOR_RGB2HSV,COLOR_BGR2HSV,COLOR_HSV2RGB,COLOR_HSV2BGR

即对于颜色转换,Opnecv2的CV_前缀的宏命名规范被Opnecv3中的COLOR_式的宏命名前缀所取代,另外,Opnecv中默认的图片通道存储顺序是BGR。

10     综合例子:

#include <opnecv2/opencv.hpp>

using namespace cv;

int main()

    {

Mat srcImage = imread(“1.jpg”);

Mat dstImage;

    cvtColor(srcImage,dstImage, COLOR_BGR2GRAY);

       imwrite(“图1.jpg”,srcImage);

imshow(“原图”,srcImage);

imshow(“变换图”,dstImage);

waitKey(0);

       return 0;

    }

OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图的更多相关文章

  1. OpenCV3编程入门笔记(6)自我验证各函数程序代码

    // asw.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2/opencv.hpp> usi ...

  2. OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换

    腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...

  3. OpenCV3编程入门笔记(3)线性滤波、非线性滤波、图像深度、通道

    15     遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数. 矩阵归一化:normalize()函数,参数 ...

  4. OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道

    11     绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...

  5. 《OpenCV3编程入门》访问图像中像素的三类方法

    ·方法一 指针访问:C操作符[ ]; ·方法二 迭代器iterator; ·方法三 动态地址计算; #include <opencv2/core/core.hpp> #include &l ...

  6. OpenCV3编程入门笔记(一)

    ---恢复内容开始--- 图像处理技术一般包括图像压缩,增强和复原,匹配.描述和识别3个部分.图像处理和计算机视觉的区别在于:图像处理侧重于“处理”图像——如增强.还原.去噪.分割等:而计算机视觉重点 ...

  7. OpenCV3编程入门笔记(5)重要章节小节及核心函数

  8. 【浅墨著作】《OpenCV3编程入门》内容简单介绍&amp;勘误&amp;配套源码下载

    经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...

  9. OpenCV3编程入门.记录

    ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...

随机推荐

  1. web前端职业规划

    关于一个WEB前端的职业规划,其实是有各种的答案,没有哪种答案是完全正确的,全凭自己的选择,只要是自己选定了, 坚持去认真走,就好.在这里,我只是简要说一下自己对于这块儿内容的理解.有一个观点想要分享 ...

  2. Java提高篇---TreeMap

    TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致 ...

  3. easyUI单元格合并自定义封装

    1.指定列的行合并 * 效果图: 合并自定义封装(一)   * 程序: function mergeGridColCells(grid,rowFildName) { var rows=grid.dat ...

  4. CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境

    一.简介 什么是LAMP    LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...

  5. QT笔记之VS2010 Qt中导入qrc资源文件

    转载1:http://qimo601.iteye.com/blog/1404693 转载2:http://blog.sina.com.cn/s/blog_92cde3060101lobm.html 转 ...

  6. 求数组中的最小子数组,时间复杂度o(n),java

    石家庄铁道大学 信1405-1 班 唐炳辉 题目:给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 设计思路:两个变量 ,一个记录当前并入的数组的值,另外一个记录所算过得最大的数组的值,当 ...

  7. 【leetcode❤python】 8. String to Integer (atoi)

    #-*- coding: UTF-8 -*-#需要考虑多种情况#以下几种是可以返回的数值#1.以0开头的字符串,如01201215#2.以正负号开头的字符串,如'+121215':'-1215489' ...

  8. BZOJ 2584: [Wc2012]memory(扫描线+线段树)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2584 题意:给出平面n个线段,任意两个线段严格不相交,且每个线段不平行于坐标轴.移 ...

  9. Windows Live Writer代码高亮插件对比

    一.Paste ASVisual Studio Code 参考:http://www.cnblogs.com/mikelij/archive/2010/11/13/1876199.html 插件下载: ...

  10. CHECKBOX_CHECKED built-in in Oracle D2k Forms

    CHECKBOX_CHECKED built-in in Oracle D2k Forms DescriptionA call to the CHECKBOX_CHECKED function ret ...