一.图像读写与简单处理

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. 一台服务器上同时启动多个 Tomcat

    在同一台服务器上启动多个 Tomcat 服务,需要修改 conf/server.xml文件里的三个部分,如下: 1.修改Http访问端口(默认为8080端口) <Connector port=& ...

  2. c语言编程实例——小球跳动

    1.预备知识 1.1 相关头文件 "#include"是c语言中用以申明所需调用的库函数或自定义函数的头文件路径及文件名.#include ""和#includ ...

  3. CoreJavaE10V1P3.5 第3章 Java的基本编程结构-3.5 操作符

    最基本的操作为赋值操作,= 即赋值操作符 基本的算术操作为加.减.乘.除取模.除取余数,其对应操作符为 +.-.*./.% 算术操作与赋值操作联合衍生为:+=:-=:*=:/=:%=: 由于处理器硬件 ...

  4. 相机标定 matlab opencv ROS三种方法标定步骤(3)

    三 ,  ROS 环境下 如何进行相机标定 刚开始做到的时候遇到一些问题没有记录下来,现在回头写的时候都是没有错误的结果了,首先使用ROS标定相机, 要知道如何查看节点之间的流程图  rosrun r ...

  5. 运行ORB-SLAM笔记_编译篇(一)

    1.下载代码   https://github.com/raulmur/ORB_SLAM/    (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文) 2.打开后如下 就好像是用一件新产品 ...

  6. WPF 命令的简单总结

    WPF的命令Command主要解决的问题,就是代码复用.一个很重要的应用意义,在于它将很多地方需要的调用的相同操作,以统一的方式管理,却又提供了不同的访问结果. 举个例子来说,我可能通过“点击butt ...

  7. flask安装首页显示

    参考:http://flask.pocoo.org/1.安装和测试[root@node1 flask]#pip install flaskd[root@node1 flask]# cat app.py ...

  8. JavaFx的一些总结

     JavaFX的一些总结:1.场景scene.布局layout.控件control是javaFX的基本组成部分.控件可以放到布局中,布局可以放到布局中,也可以放到场景中,这里要注意,场景里只能放一个布 ...

  9. Spring mail 邮件发送的简单实现

    package cn.taskSys.utils; import java.util.Properties; import org.springframework.mail.MailException ...

  10. java 基础知识2