一.图像读写与简单处理

1. Mat cv::imread(const String& filename, int flags=IMREAD_COLOR).

imread函数加载filename图像,读入时,原始图像数据不可被修改。 flags可取的值如下:IMREAD_UNCHANGED(原始图像是什么,读入的就是什么), IMREAD_GRAYSCALE(始终将图像转换为单通道灰度图像), IMREAD_COLOR(始终将图像转换为三通道BGR彩色图像), IMRAD_ANYDEPTH, IMREAD_ANYCOLOR, IMREAD_LOAD_GOAL, IMREAD_REDUCED_GRAYSCALE_2, (单通道灰度图,尺寸变为原图的1/2), IMREAD_REDUCED_COLOR_2(三通道BGR彩图,尺寸变为原图的1/2), IMREAD_REDUCED_GRAYSCALE_4(单通道灰度图,尺寸变为原图的1/2), IMREAD_REDUCED_COLOR_4(三通道BGR彩图,尺寸变为原图的1/4), IMREAD_REDUCED_GRAYSCALE_8(单通道灰度图,尺寸变为原图的1/8),  IMREAD_REDUCED_COLOR_8(三通道BGR彩图,尺寸变为原图的1/8)

eum cv::ImreadModes{ cv::IMREAD_UNCHANGED=-1, cv::IMREAD_GRAYSCALE=0, cv::IMREAD_COLOR=1, cv::IMREAD_ANYDEPTH=2, cv::IMREAD_ANYCOLOR=4, cv::IMREAD_LOAD_GDAL=8,  cv::IMREAD_REDUCED_GRAYSCALE_2=16,  cv::IMREAD_REDUCED_COLOR_2=17,  cv::IMREAD_REDUCED_GRAYSCALE_4=32,  cv::IMREAD_REDUCED_GRASCALE_8=64,  cv::IMREAD_REDUCED_COLOR_8=65}

2. bool cv::imwrite(const String& filename, InputArray img, const std::vector<int>& params=std::vector<int>())

将输入矩阵img保存为名为filename的图像,保存时,图像名不可被修改。只有八位单通道(或者CV_16U in case of PNG, JPEG2000, and tiff)或者三通道(BGR通道顺序)的图像可以用该函数保存。也可以以4通道BGRA的格式存储PNG图像,全透明的像素alpha值为0,完全不透明的像素alpha值为255. vector<int> 格式的params是在图像存储过程中的,一系列参数。它可取:IMWRITE_JPEG_QUALITY(JPEG质量可取值为0~100,越高,质量越好,默认值是95), IMWRITE_JPEG_PROGRESSIVE(), IMWRITE_JPEG_OPTIMIZE(), IMWRITE_JPEG_RST_INTRVAL(), IMWRITE_JPEG_LUMA_QUALITY(), IMWRITE_JPEG_CHRMOMA_QUALITY(), IMWRITE_PNG_COMPRESSION(PNG的压缩等级可取0~9, 值越高,压缩后的尺寸越小,但压缩时间越长,默认值是3), IMWRITE_PNG_STRATEGY(), IMWRITE_PNG_BILEVEL(), IMWRITE_PXM_BINARY(), IMWRITE_WEBP_QUALITY(), IMWRITE_PNG_STRATEGY_DEFAULT(), IMWRITE_PNG_STRTEGY_FILERED(), IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY(), IMWRITE_PNG_STRATEGY_RLE(), IMWRITE_PNG_STRATEGY_FIXED().

eum cv::ImwriteFlags{ cv::IMWRITE_JPEG_QUALITY=1, cv::IMWRITE_JPEG_PROGRESSIVE=2, cv::IMWRITE_JPEG_OPTIMIZE=3, cv::IMWRITE_JPEG_RST_INTERVAL=4, cv::IMWRITE_JPEG_LUMA_QUALITY=5, cv::IMWRITE_JPEG_CHROMA_QUALITY=6, cv::IMWRITE_PNG_COMPRESSION=16, cv::IMWRITE_PNG_STRATEGY=17, cv::IMWRITE_PNG_BILEVEL=18, cv::IMWRITE_PXM_BINARY=32, cv::IMWRITE_WEBP_QUALITY=64}

eum cv::ImwritePNGFlags{

cv::IMWRITE_PNG_STRATEGY_DEFAULT=0, cv::IMWRITE_PNG_STRATEGY_FILTERED=1, cv::IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY=2, cv::IMWRITE_PNG_STRATEGY_RLE=3, cv::IMWRITE_PNG_STRATEGY_FIXED=4}

3. Mat cv::imdecode(InputArray buf, int flags)或者 Mat cv::imdecode(InputArray buf, int flags, Mat* dst)

从内存缓冲区中读取一个图像

4.bool cv::imencode(const String& ext, InputArray img, std::vector<uchar>& buf, const std::vector<int> & params=std::vector<int>())

将一个图像编码入内存缓冲区中

########分割线###########

5. void cv::cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)

将图像从一个色彩空间转换到另一个色彩空间。 OpenCV标准的颜色格式是BGR,即在一个标准的(24bit)彩图中,第一个byte是一个八位的蓝色部分,第二个byte是绿色部分,第三个byte是红色部分。后面的第4,5,6个byte就是第二像素的三个通道,以此类推。R,G,B三个通道的常规取值范围为:(1)对于CV_8U类型的图像,范围为0~255。(2)对于CV_16U类型的图像,范围为0~65535. (3) 对于CV_32F图像,其取值范围是0~1。所以,对于线性变换来说,取值范围没什么关系,例如COLOR_BGR2GRAY,都是CV_8U类型图像之间的转换。但是对于非线性变换,输入的RGB图像需要归一化到合理的取值范围内,以得到正确的结果。例如,如果你有一个32位浮点图像CV_32F,它是由8位图像CV_8U没有任何缩放的直接转换过来,那么它的取值变换范围为0~255,而不是所期望的0~1.所以在调用cvtColor函数前,我们需要先进行图像缩放。例如:

img *=1./255;

cvtColor(img ,img COLOR_BGR2Luv);

如果转换过程增加了alpha通道,它的值会被设置为对应通道取值的最大值:255 for CV_8U, 65535 for CV_16U, 1 for CV_32F. 至于code值,太多,在此不加以枚举。

#define CV_Assert(expr) if(!!(expr)); else cv::error(cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__)

在运行时,检查条件expr是否成立,若不成立会抛出异常。

static _Tp cv::saturate_cast(uchar v)

模板函数,实现从一个基本类型到另一个基本类型的精确转换。

saturate的意思就是说,当输入值v超高了目标类型的范围,该值会被限幅。例如:

uchar a=saturate_cast<uchar>(-100); //a=0

short b=saturate_cast<short>(33333.333);//b=32767;

Opencv常用函数的更多相关文章

  1. OpenCV——常用函数查询

    1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序 ...

  2. OPENCV 常用函数

    1.cvCloneImage: IplImage* cvCloneImage( const IplImage* image ); 在使用函数之前,不用特地开辟内存,即该函数会自己开一段内存,然后复制好 ...

  3. opencv 常用函数介绍

    ××××××××××××××××××××××××××××××××××××××× CvScalar imgmean,imgstd; double imgmax,imgmin; cvAvgSdv(img, ...

  4. OpenCV常用函数分析

    1. 聚类:将拥有最相似属性的数据归为一类. K-means聚类: python调用格式:compacness, labels, centers = cv2.kmeans(data, K, crite ...

  5. opencv常用函数备忘

    //显示图片 IplImage * src = cvLoadImage("xx.JPG"); cvNamedWindow(); cvShowImage("show_ima ...

  6. Opencv常用函数讲解

    1.approxPolyDP(Mat(ps), poly, 5, true);//根据点集,拟合出多边形 2.fillConvexPoly(mask, Mat(ps), Scalar(255));根据 ...

  7. OpenCV图像处理中常用函数汇总(1)

    //俗话说:好记性不如烂笔头 //用到opencv 中的函数时往往会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总: Mat srcImage = imread("C:/Us ...

  8. Opencv 3.3.0 常用函数

    如何调图像的亮度和对比度? //如何增加图片的对比度或亮度? void contrastOrBrightAdjust(InputArray &src,OutputArray &dst, ...

  9. [opencv]常用阵列操作函数总结

    /*=========================================================================*/ // 阵列操作 /*============ ...

随机推荐

  1. 《我与Android不得不说的故事-1-立贴明志》

    产品需要迭代,人也一样,自我更新,才能不断进步,进军新领域,立贴明志. 顺便记录一下新路上的坑坑洼洼

  2. Oracle SQL 基本操作之 用户权限管理方法

     Oracle SQL 基本操作之 用户权限管理方法 最近把有关用户操作和权限管理的东西整理了一下,虽然不少博客都有过类似的整理,但是自己发现他们的内容或多或少都有些错误.于是,本人亲自对每条语句进行 ...

  3. Top 20 JavaScript Projects of 2017

    https://www.youtube.com/watch?v=SUMn8y3pi28 20. AngularJS 1 19. Passport 18. Pug 17. Socket.IO 16. J ...

  4. python3 数据类型

    Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) Number(数字) Py ...

  5. 前端知识点一HTML相关知识点

    1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层 分别是:HTML.CSS.JavaScript 作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaSc ...

  6. OpenGL编译问题随手记

    1.error C2381: "exit" : 重定义:__declspec(noreturn) 不同 编译OpenGL   Red   Book   的例子时出现错误, stdl ...

  7. 第一百二十一节,JavaScript事件绑定及深入

    JavaScript事件绑定及深入 学习要点: 1.传统事件绑定的问题 2.W3C事件处理函数 3.IE事件处理函数 4.事件对象的其他补充 事件绑定分为两种:一种是传统事件绑定(内联模型,脚本模型) ...

  8. FormsCookieName保存登录用户名的使用

    一,写一个类来实现 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

  9. Apache 2.4.16、PHP5.6.11安装教程

    以前我写过Apache2.4和php5.5的安装教程,但是后来我自己跟着自己写的东西做时发现有很多问题,这里把这些问题重新修正,再写一个教程,供大家参考. 注意:WinXP系统请选择旧版本Apache ...

  10. 通过字典给类的实体属性赋值生成url字符串

    private static Dictionary<string, string> SortedToDictionary(SortedDictionary<string, strin ...