史上最全OpenCV常用方法及使用说明汇总,建议收藏!

这篇具有很好参考价值的文章主要介绍了史上最全OpenCV常用方法及使用说明汇总,建议收藏!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

史上最全OpenCV常用方法及使用说明汇总,建议收藏!,计算机视觉,OpenCV:从入门到实战,opencv,人工智能,计算机视觉,YOLO,python

前言Hello大家好,我是小哥谈。计算机视觉的基础首先是处理图像、视频这些非结构化的数据,而图像处理库比较常用和强大的有PIL、OpenCV模块,本节课主要讲述 OpenCV常用的方法及使用说明。 🌈

     目录

🚀一、基本操作 

🚀二、绘图

🚀三、阈值处理

🚀四、几何变换

🚀五、图像运算

🚀六、平滑处理

🚀七、形态学处理

🚀八、轮廓检测

🚀九、边缘检测

🚀十、摄像头操作

🚀十一、视频文件操作

史上最全OpenCV常用方法及使用说明汇总,建议收藏!,计算机视觉,OpenCV:从入门到实战,opencv,人工智能,计算机视觉,YOLO,python

🚀一、基本操作 

1.读取图像

image = cv2.imread(filename, flags)

参数说明:

image:imread()方法的返回值,返回的是读取到的图像。

filename:要读取的图像的完整文件名。例如,要读取当前项目目录下的1.jpg,filename的值为"1.jpg"(双引号是英文格式的)。

flags:读取图像颜色类型的标记。当flags的默认值为1时,表示读取的是彩色图像,此时的flags值可以省略;当flags的值0时,表示读取的是灰度图像如果读取的是彩色图像,也将转换为与彩色图像对应的灰度图像

2.显示图像

cv2.imshow(winname, mat)

参数说明:

winname:显示图像的窗口名称

mat:要显示的图像

说明:♨️♨️♨️

与imshow()方法结合使用的还有waitKey()、destroyAllWindows()方法,即:

cv2.waitKey()

cv2.destroyAllWindows()

waitKey()方法用于等待用户按下键盘上按键的时间。当用户按下键盘上的任意按键时,将执行waitKey()方法方法,并且获取waitKey()方法的返回值。

destroyAllWindows()方法用于销毁所有正在显示图像的窗口。

 3.保存图像

cv2.imwrite(filename, img)

参数说明:

filename:保存图像时所用的完整路径

img:要保存的图像


🚀二、绘图

1.线段的绘制

img = cv2.line(img,pt1,pt2,color,thickness)

参数说明:

img:画布

pt1:线段的起点坐标

pt2:线段的终点坐标

color:绘制线段时的线条颜色

thickness:绘制线段的线条宽度

2.矩形的绘制

img = cv2.retangle(img,pt1,pt2,color,thickness)

参数说明:

img:画布

pt1:矩形的左上角坐标

pt2:矩形的右下角坐标

color:绘制矩形时的线条颜色

thickness:绘制矩形时的线条宽度

3.圆形的绘制

img = cv2.circle(img,center,radius,color,thickness)

参数说明:

img:画布

center:圆形的圆心坐标

radius:圆形的半径

color:绘制圆形时的线条颜色

thickness:绘制圆形时的线条宽度

4.多边形的绘制

img = cv2.polylines(img,pts,isClosed,color,thickness)

参数说明:

img:画布

pts:由多边形各个顶点的坐标组成的一个列表,这个列表是一个Numpy的数组类型。

isClosed:如果值为True,表示一个闭合的多边形;如果值为False,表示一个不闭合的多边形。

color:绘制多边形时的线条颜色

thickness:绘制多边形时的线条宽度

5.文字的绘制

img = cv2.putText(img,text,org,fontFace,fontScale,color,thickness,lineType,bottomLeftOrigin)

参数说明:

img:画布

text:要绘制的文字内容

org:文字在画布中的左下角坐标

fontFace:字体样式

fontScale:字体大小

color:绘制文字时的线条颜色

thickness:绘制文字时的线条宽度

lineType:线型(指的是线的产生算法,有4和8两个值,默认值为8

bottomLeftOrigin:绘制文字时的方向(有True和False两个值,默认值为False


🚀三、阈值处理

1.阈值处理

retval, dst = cv2.threshold(src, thresh, maxval, type)

参数说明:

src:被处理的图像,可以是多通道图像。

thresh:阈值阈值在125~150范围内取值的效果最好。

maxval:阈值处理采用的最大值

type:阈值处理类型

返回值说明:

retval:处理时所采用的阈值

dst:经过阈值处理后的图像

2.自适应阈值

dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

参数说明:

src:被处理的图像。需要注意的是,该图像须是灰度图像。

maxValue:阈值处理采用的最大值

adaptiveMethod:自适应阈值的计算方法

thresholdType:阈值处理类型

blockSize:一个正方形区域的大小。例如,5指的是5×5的区域。

C:常量。阈值等于均值或者加权值减去这个常量。

返回值说明:

dst:经过阈值处理后的图像


🚀四、几何变换

1.缩放

dst = cv2.resize(src, dsize, fx, fy, interpolation)

参数说明:

src:原始图像

dsize:输出图像的大小,格式为(宽,高),单位为像素

fx:可选参数。水平方向的缩放比例。

fy:可选参数。垂直方向的缩放比例。

interpolation:可选参数。缩放的插值方式,建议使用默认值。

返回值说明:

dst:缩放之后的图像

2.翻转

dst = cv2.flip(src, flipCode)

参数说明:

src:原始图像

flipCode:翻转类型

返回值说明:

dst:翻转之后的图像

3.仿射

dst = cv2.warpAffine(src, M, dsize, flags, borderMode, borderValue)

参数说明:

src:原始图像

M:一个2行3列的矩阵,根据此矩阵的值变换原图中的像素位置。

dsize:输出图像的尺寸大小

flags:可选参数,插值方式,建议使用默认值。

borderMode:可选参数,边界类型,建议使用默认值。

borderValue:可选参数,边界值,默认为0,建议使用默认值。

返回值说明:

dst:经过仿射变换后输出图像

4.透视

dst = cv2.warpPerspective(src, M, dsize, flags, borderMode, borderValue)

参数说明:

src:原始图像

M:一个3行3列的矩阵,根据此矩阵的值变换原图中的像素位置。

dsize:输出图像的尺寸大小

flags:可选参数,插值方式,建议使用默认值。

borderMode:可选参数,边界类型,建议使用默认值。

boderValue:可选参数,边界值,默认为0,建议使用默认值。


🚀五、图像运算

1.图像加运算

dst = cv2.add(src1, src2, mask, dtype)

参数说明:

src1:第一幅图像

src2:第二幅图像

mask:可选参数,掩模,建议使用默认值。

dtype:可选参数,图像深度,建议使用默认值。

返回值说明:

dst:相加之后的结果图像。如果相加之后的值大于255,则取255。

2.图像与运算

dst = cv2.bitwise_and(src1, src2, mask)

参数说明:

src1:第一幅图像

src2:第二幅图像

mask:可选参数,掩模。

返回值说明:

dst:与运算之后的结果图像

3.图像或运算

dst = cv2.bitwise_or(src1, src2, mask)

参数说明:

src1:第一幅图像

src2:第二幅图像

mask:可选参数,掩模。

返回值说明:

dst:或运算之后的结果图像

4.图像加权和运算

dst = cv2.addWeighted(src1, alpha, src2, beta, gamma)

参数说明:

src1:第一幅图像

alpha:第一幅图像的权重

src2:第二幅图像

beta:第二幅图像的权重

gamma:在和结果上添加的标量。该值越大,结果图像越亮,相反则越暗。可以是负数。

返回值说明:

dst:叠加之后的图像


🚀六、平滑处理

1.均值滤波

dst = cv2.blur(src, ksize, anchor, borderType)

参数说明:

src:被处理的图像

ksize:滤波核大小,其格式为(高度,宽度),建议使用如(3,3)、(5,5)、(7,7)等宽高相等的奇数边长。滤波核越大,处理之后的图像越模糊。

anchor:可选参数,滤波核的锚点,建议采用默认值,方法可以自动计算锚点。

borderType:可选参数,边界样式,建议采用默认值。

返回值说明:

dst:经过均值滤波处理之后的图像。

2.中值滤波

dst = cv2.medianBlur(src, ksize)

参数说明:

src:被处理的图像

ksize:滤波核的边长,必须是大于1的奇数,例如3、5、7等。方法会根据此边长自动创建一个正方形的滤波核。

返回值说明:

dst:经过中值滤波处理之后的图像。

3.高斯滤波

dst = cv2.GaussianBlur(src, ksize, sigmaX, sigmaY, borderType)

参数说明:

src:被处理的图像

ksize:滤波核的大小,宽、高必须是奇数,例如(3,3)、(5,5)等。

sigmaX:卷积核水平方向的标准差

sigmaY:卷积核垂直方向的标准差修改sigmaX或sigmaY的值都可以改变卷积核中的权重比例。如果不知道如何设计这两个参数值,就直接把这两个参数的值写成0,方法就会根据滤波核的大小自动计算出合适的权重比例。

borderType:可选参数,边界样式,建议使用默认值。

返回值说明:

dst:经过高斯滤波处理之后的图像

4.双边滤波

dst = cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace, borderType)

参数说明:

src:被处理的图像

d:以当前像素为中心的整个滤波区域的直径。如果是d<0,则自动根据sigmaSpace参数计算得到。该值与保留的边缘信息数量成正比,与方法运行效率成反比。

sigmaColor:参数计算的颜色范围,这个值是像素颜色值与周围颜色值的最大差值,只有颜色值之差小于这个值时,周围的像素才会进行滤波计算。值为255时,表示所有颜色都参与计算。

sigmaSpace:坐标空间的sigma值,该值越大,参与计算的像素数量就越多。

borderType:可选参数,边界样式,建议默认。

返回值说明;

dst:经过双边滤波处理之后的图像


🚀七、形态学处理

1.腐蚀

dst = cv2.erode(src, kernel, anchor, iterations, borderType, borderValue)

参数说明:

src:原始图像

kernel:腐蚀使用的核

anchor:可选参数,核的锚点位置。

iterations:可选参数,腐蚀操作的迭代次数,默认值为1。

borderType:可选参数,边界样式,建议默认。

borderValue:可选参数,边界值,建议默认。

返回值说明:

dst:经过腐蚀之后的图像

2.膨胀

dst = cv2.dilate(src, kernel, anchor, iterations, borderType, borderValue)

参数说明:

src:原始图像

kernel:膨胀使用的核

anchor:可选参数,核的锚点位置

iterations:可选参数,腐蚀操作的迭代次数,默认值为1。

borderType:可选参数,边界样式,建议默认。

borderValue:可选参数,边界值,建议默认。

返回值说明:

dst:经过膨胀之后的图像

3.形态学运算

dst = cv2.morphologyEx(src, op, kernel, anchor, iterations, borderType, borderValue)

参数说明:

src:原始图像

op:操作类型

kernel:操作过程中所使用的核

anchor:可选参数,核的锚点位置

iterations:可选参数,迭代次数,默认值为1。

borderType:可选参数,边界样式,建议默认。

borderValue:可选参数,边界值,建议默认。

返回值说明:

dst:操作之后得到的图像


🚀八、轮廓检测

1.检测轮廓

contours, hierarchy = cv2.findContours(image, mode, methode)

参数说明:

image:被检测的图像,必须是8位单通道二值图像。如果原始图像是彩色图像,必须转为灰度图像,并经过二值化阈值处理。

mode:轮廓的检索模式。

methode:检测轮廓时使用的方法。

返回值说明:

contours:检测出的所有轮廓,list类型,每一个元素都是某个轮廓的像素坐标数组。

hierarchy:轮廓之间的层次关系

2.绘制轮廓

image = cv2.drawContours(image, contours, contourIdx, color, thickness, lineTypee, 
hierarchy, maxLevel, offse)

参数说明:

image:被绘制轮廓的原始图像,可以是多通道图像。

contours:findContours()方法得出的轮廓列表

contourIdx:绘制轮廓的索引,如果为-1则绘制所有轮廓。

color:绘制颜色,使用BGR样式。

thickness:可选参数,画笔的粗细程度,如果该值为-1则绘制实心轮廓。

lineType:可选参数,绘制轮廓的线型。

hierarchy:可选参数,findContours()方法得出的层次关系。

maxLevel:可选参数,绘制轮廓的层次深度,最深绘制第maxLevel层。

offse:可选参数,偏移量,可以改变绘制结果的位置。

返回值说明:

image:同参数中的image,方法执行后原始图像中就包含绘制的轮廓了,可以不使用此返回值保存结果。

3.最小矩形包围框

retval = cv2.boundingRect (array)

参数说明:

array:轮廓数组

返回值说明:

retval:元组类型,包含四个整数值,分别是最小矩形包围框左上角顶点的横坐标、左上角顶点的纵坐标、矩形的宽和矩形的高。所以也可以写成x,y,w,h = cv2.boundingRect(array)的形式。

4.最小圆形包围框

center, radius = cv2.minEnclosingCircle(points)

参数说明:

points:轮廓数组

返回值说明:

center:元组类型,包含两个浮点值,是最小圆形包围框圆心的横坐标和纵坐标。

radius:浮点类型,最小圆形包围框的半径。


🚀九、边缘检测

1.Canny边缘检测

edges = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)

参数说明:

image:检测的原始图像

threshold1:计算过程中使用的第一个阈值,可以是最小阈值,也可以是最大阈值,通常用来设置最小阈值

threshold2:计算过程中使用的第二个阈值,通常用来设置最大阈值

apertureSize:可选参数,Sobel算子的孔径大小。

L2gradient:可选参数,计算图像梯度的标识,默认值为False。值为True时会采用更精准的算法进行计算。

返回值说明:

edges:计算后得出的边缘图像,是一个二值灰度图像。


🚀十、摄像头操作

1.获取摄像头

capture = cv2.VideoCapture(index)

参数说明:

capture:要打开的摄像头

index:摄像头的设备索引

2.检验摄像头初始化是否成功

retval = cv2.VideoCapture.isOpened()

参数说明:

retval:isOpened()方法的返回值。如果摄像头初始化成功,retval的值为True;否则,retval的值为False。

3.读取一帧

retval, image = cv2.VideoCapture.read()

参数说明:

retval:是否读取到帧。如果读取到帧,retval的值为True;否则,retval的值为False。

image:读取到的帧。因为帧指的是构成视频的图像,所以可以把“读取到的帧”理解为“读取到的图像”。

4.释放摄像头

cv2.VideoCapture.release() 

🚀十一、视频文件操作

1.读取视频文件

video = cv2.VideoCapture(filename)

参数说明:

video:要打开的视频

filename:打开视频的文件名。例如,产品宣传.avi等。

2.获取视频文件的属性

retval = cv2.VideoCapture.get(propId)

参数说明:

retval:获取到与propId对应的属性值

propId:视频文件的属性值

3.创建视频输出流,保存视频文件

<VideoWriter object> = cv2.VideoWriter(filename, fourcc, fps, frameSize)

参数说明:

VideoWriter object:VideoWriter类对象

filename:保存视频时的路径(含有文件名)

fourcc:用4个字符表示的视频编码格式

fps:帧速率

frameSize:每一帧的大小

4.保存视频文件(简写方式)

cv2.VideoWriter.write(frame)

参数说明:

frame:读取到的帧

5.释放视频输出流

cv2.VideoWriter.release()

史上最全OpenCV常用方法及使用说明汇总,建议收藏!,计算机视觉,OpenCV:从入门到实战,opencv,人工智能,计算机视觉,YOLO,python文章来源地址https://www.toymoban.com/news/detail-678869.html

到了这里,关于史上最全OpenCV常用方法及使用说明汇总,建议收藏!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch常用接口使用说明以及postman调用调试

    接口url:http://xxxx:9200/_cat   http://xxxx:9200/_cat/indices?v   http://xxxx:9200/test-20230526?pretty 返回值 {      \\\"acknowledged\\\" :  true ,      \\\"shards_acknowledged\\\" :  true ,      \\\"index\\\" :  \\\"test-20230526\\\" }   http://xxxx:9200/seatunnel-20230526/_search?q=*pretty   http://xxxx:9200/_bulk 类型:POST Header: Content-Type  

    2024年02月07日
    浏览(94)
  • Git常用指令,Git在pycharm中的使用说明

    1. git init: 初始化一个新的本地git仓库。例如,在您的项目文件夹中运行该命令,可以创建一个新的git仓库,供您管理项目的代码。     示例:在项目文件夹中运行 git init 命令将创建一个新的Git仓库。 2. git clone: 克隆一个远程git仓库到本地。例如,运行该命令,并指定远程

    2024年02月05日
    浏览(39)
  • 微信小程序常用弹框介绍及使用案例说明

    显示消息提示框 属性 类型 默认值 必填 说明 最低版本 title string 是 提示的内容 icon string success 否 图标 合法值 说明 最低版本 success 显示成功图标,此时 title 文本最多显示 7 个汉字长度 error 显示失败图标,此时 title 文本最多显示 7 个汉字长度 2.14.1 loading 显示加载图标,此

    2024年02月03日
    浏览(41)
  • stm32标准库开发常用函数的使用和代码说明

    用于控制端口的读写操作。 GPIO_Init:初始化GPIO端口。 GPIO_WritePin、GPIO_ReadPin:写入或读取指定GPIO引脚的状态。 GPIO_SetPin:设置指定GPIO引脚的状态为高电平。 GPIO_ResetPin:将指定GPIO引脚的状态复位为低电平。 用于管理中断相关操作。 NVIC_EnableIRQ:使能指定的中断。 NVIC_Disab

    2024年02月15日
    浏览(35)
  • 使用cmake编译opencv过程中的可选参数说明

    opencv版本:4.5.5 通过源码编译opencv时,cmake可以带有很多可选参数,这里对这些可选参数进行说明。 配置选项可以通过几种不同的方式设置: 命令行:cmake-Doption=value… 初始缓存文件:cmake-C my_options.txt… 通过Cmake-GUI进行设定 在本参考中,我们将使用常规命令行。 最常用和有

    2024年02月16日
    浏览(48)
  • valgrind基本功能介绍、基础使用方法说明 valgrind基本功能介绍、基础使用方法说明

    valgrind基本功能介绍、基础使用方法说明_valgrind使用方法_HNU Latecomer的博客-CSDN博客 拷贝效果不好,请看原文。 1、Valgrind概述 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。 Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(f

    2024年02月07日
    浏览(57)
  • F12-开发者工具常用操作与使用说明之网络network

    开发十分钟,调试三小时。 在开发过程中,我们希望是用更多的时间来创造,而不是被各种各样的问题所困扰。 尤其是在跟后端对接口的时候,是否能够快速的发现问题,就显得很重要。 network面板中提供了哪些功能,能否让我们解脱一点呢? 这是查看请求启动器的调用链

    2024年02月07日
    浏览(34)
  • 【物联网】stm32标准库开发常用函数的使用和代码说明

    用于控制端口的读写操作。 GPIO_Init:初始化GPIO端口。 GPIO_WritePin、GPIO_ReadPin:写入或读取指定GPIO引脚的状态。 GPIO_SetPin:设置指定GPIO引脚的状态为高电平。 GPIO_ResetPin:将指定GPIO引脚的状态复位为低电平。 用于管理中断相关操作。 NVIC_EnableIRQ:使能指定的中断。 NVIC_Disab

    2024年02月14日
    浏览(36)
  • F12-开发者工具常用操作与使用说明之源代码sources

    我们先来一个小示例给大家看一下: 大家能看出来上面的代码为什么输出的是17吗?按照正常的输出应该是7才对呀!如果你对此有疑惑,说明你在平时调试代码的时候已经浪费了很多时间了哦。 今天就带大家来探索一下开发者工具中源代码的使用,这里提供了非常方便并且

    2024年02月09日
    浏览(75)
  • springboot 集成 Swagger2 配置以及常用注解的说明和使用 ( 超详细)

    一、注解的使用 和 说明 结构化说明如下: @Api:用在请求的类上,表示对类的说明      tags=\\\"说明该类的作用,可以在UI界面上看到的注解\\\"    (也就是给类取别名)     value=\\\"该参数没什么意义,在UI界面上也看到,所以不需要配置\\\"    @ApiOperation:用在请求的方法上,说

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包