Opencv常用函数
一.图像读写与简单处理
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常用函数的更多相关文章
- OpenCV——常用函数查询
1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序 ...
- OPENCV 常用函数
1.cvCloneImage: IplImage* cvCloneImage( const IplImage* image ); 在使用函数之前,不用特地开辟内存,即该函数会自己开一段内存,然后复制好 ...
- opencv 常用函数介绍
××××××××××××××××××××××××××××××××××××××× CvScalar imgmean,imgstd; double imgmax,imgmin; cvAvgSdv(img, ...
- OpenCV常用函数分析
1. 聚类:将拥有最相似属性的数据归为一类. K-means聚类: python调用格式:compacness, labels, centers = cv2.kmeans(data, K, crite ...
- opencv常用函数备忘
//显示图片 IplImage * src = cvLoadImage("xx.JPG"); cvNamedWindow(); cvShowImage("show_ima ...
- Opencv常用函数讲解
1.approxPolyDP(Mat(ps), poly, 5, true);//根据点集,拟合出多边形 2.fillConvexPoly(mask, Mat(ps), Scalar(255));根据 ...
- OpenCV图像处理中常用函数汇总(1)
//俗话说:好记性不如烂笔头 //用到opencv 中的函数时往往会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总: Mat srcImage = imread("C:/Us ...
- Opencv 3.3.0 常用函数
如何调图像的亮度和对比度? //如何增加图片的对比度或亮度? void contrastOrBrightAdjust(InputArray &src,OutputArray &dst, ...
- [opencv]常用阵列操作函数总结
/*=========================================================================*/ // 阵列操作 /*============ ...
随机推荐
- Redis的安装和使用之------Redis相关运用
原文 http://wangzhijian.blog.51cto.com/6427016/1731962 一.简介 REmote DIctionary Server(Redis) 是一个由 Salv ...
- C# WinForm 类似QQ靠近屏幕边缘隐藏显示
当窗体离屏幕四周一定距离时,改变窗体位置,引导窗体靠边:靠边后,当鼠标离开窗体时,改变窗体位置,窗体隐藏,凸出一点在屏幕内:隐藏后,当鼠标移到窗体时,窗体显示. using System; using ...
- Maven之(五)Maven仓库
本地仓库 Maven一个很突出的功能就是jar包管理,一旦工程需要依赖哪些jar包,只需要在Maven的pom.xml配置一下,该jar包就会自动引入工程目录.初次听来会觉得很神奇,下面我们来探究一下 ...
- c#委托概念
委托的官方概念是:安全封装方法的类型. 百度百科的概念是,委托是个类,定义了方法的类型,使得方法可以作为另外一个方法的参数进行传递.使得程序具有很好的扩展性. 揉碎了讲一下这个概念: 张三要做三件事: ...
- mysql中You can't specify target table for update in FROM clause
使用mysql在删除表中重复记录 delete from user where username in (select user name form(select username from user ...
- [ An Ac a Day ^_^ ][kuangbin带你飞]专题八 生成树 POJ 1679 The Unique MST
求最小生成树是否唯一 求一遍最小生成树再求一遍次小生成树 看看值是否相等就可以 #include<cstdio> #include<iostream> #include< ...
- DevExpress的SpinEdit控件无法输入数字的问题
今天在发布程序后突然发现了这个问题,刚开始很莫名其妙的,因为在调试时从来没碰到过.然后经过测试发现,这个问题的原因和输入法有很大关系: 当你的输入法是中文状态时,是无法向框中输入数字的,此时只能点击上 ...
- Spring Security(17)——基于方法的权限控制
目录 1.1 intercept-methods定义方法权限控制 1.2 使用pointcut定义方法权限控制 1.3 使用注解定义方法权限控制 1.3.1 JSR-25 ...
- [DP之普通系列]
noip快要来了 要练练dp 难度也挺接近 还是挺好的 [Usaco2013 Nov]Pogo-Cow 这一道题要下一段大于这一段 所以的话我们就要记录每一段的状态 F[i,j]=F[j,k]+A[i ...
- c#语言简介
语言的历史:c,c++,java,c#, c语言最早,c++语言复杂,而java把其中难的一部分去掉,也成为c--,而c#早期类似java. c#简单高效,并且与web结合. C#的运行环境是.net ...