OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图
图像载入、显示、保存函数:
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)图像载入、显示、保存、变换灰度图的更多相关文章
- OpenCV3编程入门笔记(6)自我验证各函数程序代码
// asw.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2/opencv.hpp> usi ...
- OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换
腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...
- OpenCV3编程入门笔记(3)线性滤波、非线性滤波、图像深度、通道
15 遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数. 矩阵归一化:normalize()函数,参数 ...
- OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道
11 绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...
- 《OpenCV3编程入门》访问图像中像素的三类方法
·方法一 指针访问:C操作符[ ]; ·方法二 迭代器iterator; ·方法三 动态地址计算; #include <opencv2/core/core.hpp> #include &l ...
- OpenCV3编程入门笔记(一)
---恢复内容开始--- 图像处理技术一般包括图像压缩,增强和复原,匹配.描述和识别3个部分.图像处理和计算机视觉的区别在于:图像处理侧重于“处理”图像——如增强.还原.去噪.分割等:而计算机视觉重点 ...
- OpenCV3编程入门笔记(5)重要章节小节及核心函数
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
- OpenCV3编程入门.记录
ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...
随机推荐
- html介绍
Html的介绍 Html 是一种标记语言,主要的用处是开发网页 展示出文字,图片,视频,声音等等 是我们web开发的基础 做什么 所谓的静态页面,指的是能不能交互,而不是东西能不能动 网页设计师(ht ...
- java提高篇---HashTable
在java中与有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相 ...
- 我的android学习经历15
利用Intent实现有返回结果的页面跳转 主要用的方法: (1)Intent的构造方法:intent(当前界面对象,要跳转的界面.class); (2)接受结果的方法onActivityResult( ...
- (1)建立一个名叫Cat的类: 属性:姓名、毛色、年龄 行为:显示姓名、喊叫 (2)编写主类: 创建一个对象猫,姓名为“妮妮”,毛色为“灰色”,年龄为2岁,在屏幕上输 出该对象的毛色和年龄,让该对象调用显示姓名和喊叫两个方法。
package lianxi; public class Cat { String Name, Color; int Age; void getName() { System.out.println( ...
- BZOJ 2568 比特集合
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2568 题意:维护一个集合S,支持以下操作: (1)INS M : 将元素 M 插入 ...
- Formatting Excel File Using Ole2 In Oracle Forms
Below is the some useful commands of Ole2 to format excel file in Oracle Forms.-- Change font size a ...
- POJ 3461 Oulipo(乌力波)
POJ 3461 Oulipo(乌力波) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] The French autho ...
- Fiddler界面详解
Statistics 页签 完整页签如下图: Statistics 页签显示当前用户选择的 Sessions 的汇总信息,包括:选择的 Sessions 总数.发送字节数.接收字节数.响应类型的汇总表 ...
- Android学习参考2
一名自学成才的Android开发者怒答! 1. Google做开发前完全是小白,真心不知道有Google这东西,只晓得百 度,遇到问题直接百度,不是黑百度,百度在娱乐八卦方面确实靠谱,但是技术方面查出 ...
- scala打印九九乘法表的5种实现
使用scala打印九九乘法表,可以有多种实现方法,实现的过程充分的体现的scala语言的优势和巨大的简洁性和高效性, 下面我用了5种方法实现九九乘法表. 使用类似于java,c++等指令风格的的编程实 ...