栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV4图像处理算子不完全手册-入门篇

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV4图像处理算子不完全手册-入门篇

目录
  • 说明
  • 导航
  • 正文
    • 图像数据读写
      • 1、Mat类
      • 2、图像读取与显示
      • 3、视频与摄像头
      • 4、图像保存
      • 5、视频保存
      • 6、XML与YMAL文件
    • 图像基本操作
      • 1、颜色空间
        • 颜色模型转换
        • 图像数据类型转换
        • 多通道图像分离
        • 多通道图像合并
      • 2、像素操作
        • 像素最大/最小值
        • 矩阵转换(重置)
        • 平均值
        • 标准差
        • 比较运算
        • 逻辑运算
        • 全局阈值
        • 自适应阈值
        • 查找表
      • 3、图像变换
        • 图像连接
        • 尺寸变换
        • 翻转变换
        • 仿射变换
        • 透视变换
        • 极坐标变换
      • 4、图像绘制
        • 绘制圆
        • 绘制直线
        • 绘制椭圆
        • 绘制矩形
        • 绘制多边形
        • 绘制文字
        • 感兴趣区域ROI

说明

本文主要是记录我在学习和使用OpenCV4过程中对常用算子的记录和简单描述,如描述有误请留言指正!示例代码使用C++编写,仅供参考,不可直接使用!

导航

OpenCV4图像处理算子不完全手册-进阶篇
OpenCV4图像处理算子不完全手册-应用篇

正文 图像数据读写 1、Mat类

构造Mat对象:
cv::Mat mat(row,column,type)
cv::Mat mat(row,column,type,Scalar)
cv::Mat mat(Size,type)
cv::Mat mat(const Mat& mat)
读写Mat对象
单通道图像mat.at(row,column)
多(三)通道图像mat.at(row,column).val[num],num的值为0~2

2、图像读取与显示

imread(filename,flags)
nameWindow(winname,flags)
imshow(winname,mat)

3、视频与摄像头

构造VideoCapture对象:
VideoCapture(),capture.open(filename),capture.open(index),index为相机索引,0为默认相机
VideoCapture(filename,apiPreference)
VideoCapture(index,apiPreference)

//读取帧
Mat fram;
//方法1
capture >> fram;
//方法2
capture.read(fram)	//成功返回true,否则返回false
4、图像保存

imwrite(filename,mat,params),params为保存图片格式的属性设置标志

5、视频保存

构造VideoWriter对象:
VideoWriter()
VideoWriter(filename,fourcc,fps,framsize,isColor),filename应包含视频格式(mp4、avi等),fourcc为压缩帧的4字符编解码器代码,fps为帧率,framsize为帧大小,isColoe是否彩色

//保存capture的帧
//方法1
writer.write(fram);
//方法2
writer << fram;
6、XML与YMAL文件

FileStorage对象:
FileStorage(filename,flags,encoding),flags操作类型,encoding编码格式
FileStorage(),open(filename,flags,encoding)
write(filename,val)
当某个变量中含有多个数据或子变量时使用FileNode对象:

FileStorage Storage(filename,FileStorage::READ);
FileNode node = Storage["xxx"];
//FileNode迭代器
FileNodeIterator NodeIterator = node.begin();
//数组形式
node["xxxx"][index];
图像基本操作 1、颜色空间 颜色模型转换

cvtColor(src,dst,code,dstCn),src输入原始图像,dst输出目标图像,code颜色空间转换标志,dstCn目标图像的通道数(默认0)。

图像数据类型转换

convertTo(m,rtype,alpha,beta),m转换类型后输出的图像,rtype目标数据类型,alpha缩放因子,beta偏置因子。

多通道图像分离

split(src,mvbegin),mvbegin为分离后的单通道图像数组,数组大小取决于src的通道数。
split(m,mv),mv为分离后的单通道图像向量(vector)

多通道图像合并

merge(mv,count,dst),mv为需要合并的单通道图像数组,count为图像数组的长度,dst为输出的多通道数组。
merge(mv,dst),mv为需要合并的单通道图像向量(vector)

2、像素操作 像素最大/最小值

minMaxLoc(src,minVal,maxVal,minLoc,maxLoc,mask),minVal/maxVal图像或矩阵中的最大/最小值,minLoc/maxLoc图像或矩阵中最大/最小值所在的坐标位置,mask用于在指定区域寻找最大/最小值。

矩阵转换(重置)

Mat::reshape(cn,rows),cn为转换后的通道数(0保持不变),rows为转换后的行数(0保持不变)。

平均值

mean(src,mask),src为输入图像,mask为掩模。

标准差

meanStdDev(src,mean,stddev,mask),mean为图像每个通道的平均值,stddev为图像每个通道的标准差,mask为掩模。

比较运算

min(src1,src2,dst),max(src1,src2,dst),比较src1与src2,保留较大/较小值到dst中。

逻辑运算

bitwise_and(src1,src2,dst,mask),与运算,mask掩模用于指定运算区域
bitwise_or(src1,src2,dst,mask),或运算
bitwise_xor(src1,src2,dst,mask),异或运算
bitwise_not(src1,src2,dst,mask),非运算

全局阈值

threshold(src,dst,thresh,maxval,type),src只能是CV_8U或CV_32F类型,thresh为阈值,maxval为二值化过程中的最大值,type为选择二值化方法的标志。

自适应阈值

adaptiveThreshold(src,dst,maxValue,adaptiveMethod,thresholdType,blockSize,C),src只能是CV_U8C1类型,maxValue为二值化的最大值,adaptiveMethod为自适应阈值的方法,thresholdType为选择二值化方法的标志,blockSize为像素邻域大小(一般为奇数),C为从平均值或加权平均值中减去的常数。

查找表

LUT(src,lut,dst),src必须为CV_8U类型,lut为256个像素灰度值的查找表

3、图像变换 图像连接

vconcat(src,nsrc,dst),src为Mat数组,nsrc为数组大小,纵向连接。
vconcat(src1,src2,dst),将src1与src2连接合并到dst。
hconcat(src,nsrc,dst),横向连接。
hconcat(src1,src2,dst)

尺寸变换

resize(src,dst,dsize,fx,fy,interpolation),dsize为输出图像的尺寸,fx为横轴的比例因子,fy为纵轴的比例因子,interpolation为插值方法标志。

翻转变换

flip(src,dst,flipCode),flipCode为翻转方式标志,>0绕y轴翻转,=0绕x轴翻转,<0绕两个轴翻转。

仿射变换

1、计算变换矩阵:
getRotationMatrix2D(center,angle,scale),center为旋转中心,angle为旋转角度,scale为两个轴的比例因子,可实现旋转过程中的缩放,1表示保持大小不变。
2、如果知道src与dst对应的任意三个点的坐标,可以确定变换矩阵:
getAffineTransform(src[],dst[]),src[]为src图像中的三个点坐标的point2f数组,dst[]为dst图像中的三个点坐标的point2f数组
3、仿射变换
warpAffine(src,dst,M,dsize,flags,borderMode,borderValue),M为从getRotationMatrix2D中得到的2x3的变换矩阵,flags为插值方法标志,borderMode为像素边界外推方法标志,borderValue为填充边界的数值。

透视变换

1、计算变换矩阵:
getPerspectiveTransform(src[],dst[],solveMethod),src[]是原图像中四个point2f类型的点坐标,dst[]是目标图像中四个point2f类型的点坐标,solveMethod为选择透视变换矩阵的方法。
2、透视变换
warpPerspective(src,dst,M,dsize,flags,borderMode,borderValue),M为从getPerspectiveTransform中得到的3x3的变换矩阵,其他与仿射变换warpAffine相同。

极坐标变换

warpPolar(src,dst,dsize,center,maxRadius,flags),dsize为目标图像大小,center为变换时极坐标的原点,maxRadius为变换时边界元的半径,flags为插值方法与极坐标映射方法的标志。

4、图像绘制 绘制圆

circle(img,center,radius,color,thickness,lineType,shift),将圆绘制在img上,thinckness为圆的轮廓宽度(负值则绘制实心圆),lineType为圆的边界类型,shift为中心坐标和半径数值的小数位数。

绘制直线

line(img,pt1,pt2,color,thickness,lineType,shift),pt1和pt2为直线的起点和终点,数据类型为Point。

绘制椭圆

ellipse(img,center,axes,angle,startAngle,endAngle,color,thickness,lineType,shift),center为椭圆中心,axes为椭圆主轴大小的一半,angle为椭圆旋转的角度,startAngle为起始角度,endAngle为终止角度。

绘制矩形

rectangle(img,pt1,pt2,color,thickness,lineType,shift),pt1和pt2分别为矩形的左上角和右下角顶点。
rectangle(img,rec,color,thickness,lineType,shift),rec为事先定义好的Rect矩形。

绘制多边形

fillPoly(img,pts,npts,ncontours,color,lineType,shift,offset),pts为point**类型的多边形顶点数组,npts为每个多边形顶点数组中顶点的个数,ncontours为绘制多边形的个数,offset为可选的所有顶点的偏移。

绘制文字

putText(img,text,org,fontFace,fontScale,color,thickness,lineType,bottomLeftOrigin),text只支持英文,org为text的左下角坐标,fontFace为字体类型,fontScale为自提大小,bottomLeftOrigin指定图像数据原点的位置,默认false为左上角,true为右上角。

感兴趣区域ROI
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号