OpenCV基础入门( 二 )

& params=vector());
3 core核心模块
基本的数据结构,Mat是踏入2.0时代的主打,使用Mat类数据结构作为主打之后,变得越发像需要很少编程涵养的那样,上手很方便 。
3.1 像素值的存储方法3.2 常见的数据结构3.3 绘图函数

OpenCV基础入门

文章插图
基本图形的绘制
cv.line(img,start,end,color,thickness)'''参数-img:要绘制直线的图像-Start,end:直线的起点和终点-color:线条的颜色-Thickness:线条宽度'''
cv.rectangle(img, leftupper, rightdown, color, thickness)'''参数-img:要绘制矩形的图像-Leftupper,rightdown:矩形的左上角和右下角坐标-color:线条的颜色-Thickness:线条的宽度'''
cv.circle(img, centerpoint, r, color, thickness)'''参数-img:要绘制圆形的图像-Centerpoint,r:圆心和半径-color:线条的颜色-Thickness:线条的宽度,为-1时,会填充颜色'''
如果需要在图像中添加文字
cv.(img, text, , font, , color, , cv.)
‘’’
参数
-img:图像
-text:要写入的文本数据
-:文本的防治位置
-font:字体
-:字体大小
‘’’
3.4 数组操作相关函数
访问图像元素
ROI感兴趣区域:使用rect矩形,range:从起始索引到中止索引 。线性混合操作:前后页面切换的叠化效果计算数组加权和:()函数通道分离:split()函数通道合并:merge()函数图像对比度、亮度值调整离散傅里叶变换:简单来说就是将图像分解成正弦和余弦两个部分 。以及一些二维矢量的幅值,自然对数以及矩阵归一化等数学运算 。XML和YAML文件的操作
这里以做一些解释
图像的属性包括行数,列数和通道数,图像数据类型,像素数等 。
img.shapeimg.dtypeimg.size#像素个数
图像通道的拆分与合并
有时需要在B,G,R通道图像上单独工作 。在这种情况下,需要将BGR图像分割为单个通道 。或者在其他情况下,可能需要将这些单独的通道合并到BGR图像 。你可以通过以下方式完成 。
#拆分通道b,g,r = cv.split(img)#通道合并img = cv.merge((b,g,r))
色彩空间的改变
中有150多种颜色空间转换方法 。最广泛使用的转换方法有两种,BGR《》Gray和BGR《》HSV
cv.cvtColor(input_image, flag)'''参数-input_image:进行颜色空间转换的图像-flag:转换类型+ cv.COLOR_BGR2GRAY:+ cv.COLOR_BGR2HSV:'''
图像的加法
可以使用的cv.add()函数把两幅图像相加,或者可以简单地通过numpy操作添加两个图像,如res = img1 + img2 。两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值 。
注意:加法和Numpy加法之间存在差异 。的加法是饱和操作,而Numpy添加是模运算 。
图像的混合
这其实也是加法,但是不同的是两幅图像的权重不同,这就会给人一种混合或者透明的感觉
cv.addWeighted(img1, 0.7, img2, 0.3, 0)
我认为大致的体系如上图所示,数据都是底层,上层则是对数据的操作,从来都是如此 。
4 图像处理 4.1 传统图像处理
传统的图像处理知识主要包括
4.1.1 三种线性滤波4.1.2 非线性滤波4.1.3 形态学