一.图像读写与简单处理

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. MVC JsonResult

    public JsonResult GetJson() { var res = new JsonResult(); res.Data = new {isSucceed = true, returnMs ...

  2. 从A页面跳转到B页面,从B页面按浏览器自带按钮返回到A页面并且刷新页面--手机操作浏览器自带返回并自带刷新

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  3. NLog在MVC中使用

    NLog在MVC中使用 在site根目录新建NLog.config <?xml version="1.0"?> <configuration> <nl ...

  4. POJ 1952 BUY LOW, BUY LOWER

    $dp$. 一开始想了一个$dp$做法,$dp[i][j]$表示前$i$个数字,下降序列长度为$j$的方案数为$dp[i][j]$,这样做需要先离散化然后用树状数组优化,空间复杂度为${n^2}$,时 ...

  5. 技能学习经验与C语言学习调查

    技能学习经验与C语言学习调查 前言 要说的话,这还是我第一次写博客.不论是为了作业也好,为了将来的学习工作也好,写博客都是必不可少的,也算是个自我提升的途径吧.不过第一次写博客,就用从来没听说过的ma ...

  6. SURF 特征法

    public static void FindMatch(Mat modelImage, Mat observedImage, out long matchTime, out VectorOfKeyP ...

  7. JS定时器设置、快速取消

    1.首先定义自己的方法 function test() { alert("开始"); } 2.在定时器中使用 setInterval("test()",1000 ...

  8. js将xml对象,xml文件解析成xml dom对象,来对对象进行操作

    由于ie与其他的浏览器对于xml文件的解析方式不同,所以有不同的解析方式 1.1 IE解析xml文件的方式 var xmlDoc=new ActiveXObject("Microsoft.X ...

  9. 页面导入样式时,使用link和@import有什么区别?

    1 link属于XHTML标签,而@import是CSS提供的: 2 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载: 3 import只有在IE5以上才能 ...

  10. mysql无法输入中文

    #查看系统的环境变量 echo $LANG zh_CN.UTF-8 vim /etc/sysconfig/i18n 1 LANG="en_US.UTF-8"2 SYSFONT=&q ...