opnecv笔记(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;

    }

时间: 2024-11-03 21:36:00

opnecv笔记(1)图像载入、显示、保存、变灰度图的相关文章

RGB图像转为灰度图

最后结论: Grey = (R*38 + G*75 + B*15)>> 7 代码 #include <cv.h> #include <highgui.h> using namespace cv; int main(){ Mat src= imread("C:\\Users\\Poplar\\Pictures\\ff.jpg"); Matgrey(src.rows, src.cols, CV_8UC1, Scalar(0)); for (inty =

OpenCV2学习笔记:图像的读取与显示

1. 图像读取:imread() Mat imread(const string& ?lename, int ?ags=1 ) 参数介绍: filename: 待加载的文件名称. flags: 此标志用来指定被加载图像的颜色类型(color type).这个标志的取值可以有: -- CV_LOAD_IMAGE_ANYDEPTH : 如果设置这个标志的话,如果图像为16位或32位深度的图像,则返回对应深度的图像:否则,将图像转换为8位深度图像再返回. -- CV_LOAD_IMAGE_COLOR

Simulink载入图像并显示

在simulink中载入图像并显示的方法如下: 1, 建立simulink空文档: 2, 加入"Image From File",该Block位于Computer Virsion Systems Toolbox的"sources"中: 3,点击Image FROM file, 设置图像路径 3,加入"Video Viewer", 该Block位于Computer Virsion Systems Toolbox的"sinks"中

Theano学习笔记(六)——载入与保存、条件

载入与保存 Python标准的保存类别实体并重新载入它们的途径是pickle机制.许多Theano对象可以由此被序列化(或者反序列化),然而pickle的局限性在于,被序列化的类别实例的代码或者数据并没有被同时保存.因此重新载入先前版本的类可能会出问题. 因此,需要寻求基于预期保存和重新载入的耗时的不同机制. 对于短期(比如临时文件和网络转录),Theano的pickle是可行的. 对于长期(比如从实验中保存模型)不应当依赖于Theano的pickle对象. 推荐在任何其他Python项目的过程

图像载入 imread()[OpenCV 笔记4]

Mat imread( const string& filename, int flags=1 ); filename 载入的图像名: flags 指定加载图像的颜色类型,默认载入三通道彩色图像, 如果取枚举类型 (OpenCV3中暂时失效),则定义如下 enum{ CV_LOAD_IMAGE_UNCHANGED = -1, /* 8 bit, color or not */ CV_LOAD_IMAGE_GRAYSCALE = 0, /* 8 bit, gray */ CV_LOAD_IMAGE

图像处理 基于Visual C++编程 学习笔记 (3)显示灰度图像和二值化图像

灰度图imggray 有了上面的基础,灰度图就相当简单了 彩色图转灰度方法: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数方法:Gray=(R*30+G*59+B*11)/100 3.移位方法:Gray =(R*28+G*151+B*77)>>8;  ??4.平均值法:Gray=(R+G+B)/3; 5.仅取绿色:Gray=G: 这里使用浮点算法 void imggray::showgray(CDC *pDC, CRect rc) { ReadBitData();

安卓第十五天笔记-图形图像一些简单处理

安卓第十五天笔记-图形图像一些简单处理 多媒体编程简介--图形的一般处理 1.计算机中图形计算的大小 一般白色就是0,黑色就是1 单色位图: 8位表示一个字节, 大小:长*宽/8,表示大小,还有一些文件信息如创建时间,什么工具创建之类的 24位位图 一个像素表示24位 大小:长*宽*24/8 256色 1个像素可以表示256种颜色 一个字节它的长度刚好是256 ,那么一个像素点就是一个字节 大小:长*宽 安卓中默认使用32位的 位图的缺陷 放大到一定的比例会出会出现失真与锯齿形状 占用很大的存储

OPENCV学习笔记2_Mat 加载, 显示

1.1 Introduction to related functions    1.Imread() function Mat imread( const String& filename, int flags = IMREAD_COLOR ); filename:Name of file to be loaded flags:载入标识,指定一个加载图像的颜色类型(参考enum ImreadModes).自带缺省值1,如果在调用时忽略这个参数,就表示载入三通道的彩色图像. enum Imrea

第二章:图像的显示 和运行完整程序代码

VC++图像处理程序设计(第2版)    杨淑莹 编著     边奠英 主审 第二章 图像的显示 Joanna-In-Hdu 手工打,印象更深刻 使用工具 VS2010 mfc 颜色表中装有该文件所有颜色的R.G.B各分量,每个像素的像素值是颜色索引表的索引号. 通常所称的VGA显示模式是8位显示模式,能显示256种颜色,即0~255进行编号,每一个编号对应一种颜色,颜色的编号就是颜色的索引号. 屏幕上的每一个像素对应一个颜色号,不同像素的颜色对应不同的调色板颜色值.图像的像素值并不是颜色值,而