OpenCV 功能函数介绍

news/2024/12/16 13:54:17/

一, 二值化函数

功能:

用于对图像进行二值化处理

参数:

cv2.threshold(输入你的图像所对应的灰度图,

                      阈值:是浮点还是整数取决予图像的数据类型

                      最大值;高于阈值的像素值,

                      阈值类型:cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、                 cv2.THRESH_TRUNC、cv2.THRESH_TOZERO 和 cv2.THRESH_TOZERO_INV

                                  )

返回值:

二值化的返回值有2个

1:实际使用的阈值

2:二值化的图像

注意:调用二值化函数使用的图像一定要是灰度化后的图像

应用:

import cv2img = cv2.imread("./women.png.")img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret, img_threshold = cv2.threshold(img_gray,120,255,cv2.THRESH_BINARY)print(ret)cv2.imshow("img",img)
cv2.imshow("img_gary",img_gray)
cv2.imshow("img_threshold",img_threshold)
cv2.waitKey(0)

可以通过修改阈值呈现不同的效果

1.使用cv2.THRESH_BINARY

2.使用cv2.THRESH_BINARY_INV

3.使用THRESH_TRUNC

二.自适应二值化函数  功能、参数、返回值、应用

功能:

与二值化算法相比,自适应二值化更加适合用在明暗分布不均的图片

参数:

cv2.adaptiveThreshold(输入你的图像所对应的灰度图,

                                       最大值,#通常为255

                                       自适应方法,#cv2.ADAPTIVE_THRESH_MEAN_C   |                                                                            cv2.ADAPTIVE_THRESH_GAUSSIAN_C

                                       二值化类型,

                                       核的大小:最好是奇数

                                       最终的阈值:从计算出的平均值或加权和中减去的常数

返回值:

自适应二值化的图像

应用:

import cv2img = cv2.imread("./women.png.")img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)img_adapt = cv2.adaptiveThreshold(img_gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3)cv2.imshow("img",img)
cv2.imshow("img_gary",img_gray)
cv2.imshow("img_threshold",img_adapt)
cv2.waitKey(0)

可以通过修改阈值和自适应方法呈现不同的效果

1.cv2.ADAPTIVE_THRESH_GAUSSIAN_C

2.cv2.ADAPTIVE_THRESH_MEAN_C

三,腐蚀函数

功能:

将二值化图像中的白色部分尽可能的压缩

参数:

cv2.erode(读取图片,

                   kernel: 结构元素,核,

                   iterations: 迭代次数,次数越多效果越明显

                    )

kernel:

cv2.getStructuringElement(cv2.MORPH_ELLIPSE,

                                                (3, 3)大小

)

返回值:

腐蚀后的图像

应用:

import cv2img = cv2.imread("./123.png.")kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))img_erode = cv2.erode(img,kernal)cv2.imshow("img",img)
cv2.imshow("img_gary",img_erode)
cv2.waitKey(0)

四,膨胀函数

功能:

将二值化图像中的白色部分尽可能的扩张

参数:

cv2.dilate(

                        读取图片,

                   kernel: 结构元素,核,

                   iterations: 迭代次数,次数越多效果越明显

)

返回值:

膨胀后的图片

应用:

import cv2img = cv2.imread("./123.png.")kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))img_dilate = cv2.dilate(img,kernal)cv2.imshow("img",img)
cv2.imshow("img_gary",img_dilate)
cv2.waitKey(0)

五,仿射变换函数

 功能:

用于对图像进行仿射变换(Affine Transformation)的函数,仿射变换包括平移、旋转、缩放以及剪切等操作。

参数:

cv2.warpAffine(输入的图像,

                        变换矩阵,:通过其他函数(如 cv2.getRotationMatrix2D())计算得到的,用于描述仿射变换

                        输出图像的大小,

                        插值方法(默认为线性),:cv2.INTER_LINEAR(线性插值)、cv2.INTER_NEAREST(最近邻插值)、cv2.INTER_CUBIC(三次样条插值)

                        边缘填充方法,:cv2.BORDER_CONSTANT(常量填充)、cv2.BORDER_REFLECT(反射)、cv2.BORDER_REFLECT_101(反射101)

                        边界颜色 :borderMode 为 cv2.BORDER_CONSTANT

)

cv2.getRotationMatrix2D(center:旋转的中心点, angle:旋转角度, scale:缩放因子)

返回值:

输出图像

应用:

import cv2img = cv2.imread("./women.png")M = cv2.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)
img_warp = cv2.warpAffine(img,M,(700,700),flags=cv2.INTER_LINEAR,borderMode=cv2.BORDER_WRAP)cv2.imshow("img",img)
cv2.imshow("img_gary",img_warp)
cv2.waitKey(0)

修改缩放因子

六,透视变换函数

功能:

用于对图像进行透视变换的函数

而透视变换是把一个图像投影到一个新的视平面的过程

参数:

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

cv2.warpPerspective(输入图像,

                                    透视变换矩阵,

                                    输出图像的尺寸,

                                    输出图像,这是一个可选参数。

                                     插值方法,:cv2.INTER_LINEAR(线性插值)、cv2.INTER_NEAREST(最近邻插值)、cv2.INTER_CUBIC(三次样条插值)

返回值:

图像

应用:

import cv2
import numpy as npimg = cv2.imread("./223.png")points1 = np.array([[80, 300], [950, 50], [150, 620], [1060,400]],dtype=np.float32)points2 = np.array([[0, 0], [img.shape[1], 0], [0, img.shape[0]], [img.shape[1], img.shape[0]]],dtype=np.float32)
M = cv2.getPerspectiveTransform(points1, points2)img_warp = cv2.warpPerspective(img, M,(img.shape[1], img.shape[0]))cv2.imshow("img",img)
cv2.imshow("img1",img_warp)
cv2.waitKey(0)


http://www.ppmy.cn/news/1555600.html

相关文章

Spring Boot 3.0与Jakarta EE 10的深度解析

随着Java生态的不断演进,Spring Boot和Jakarta EE始终是现代Java开发中的两大核心框架。在2023年,Spring Boot 3.0与Jakarta EE 10的发布标志着Java技术又迈上了一个新的台阶。这篇文章将为您详细解析这些新技术的关键更新,并探讨如何将其应用…

DDR5 中的数据反馈判决均衡(DFE):全面解析与展望

目录 一、引言二、DFE原理三、DFE架构四、实现方案五、测试方法六、DFE效果七、成本与收益八、具体应用九、技术发展趋势十、参考文献 一、引言 DDR5 作为新一代内存标准,其中的数据反馈判决均衡(DFE)技术更是引人注目。DFE即判决反馈均衡&a…

110.【C语言】数据结构之判断是否为完全二叉树

目录 1.知识回顾 2.分析 完全二叉树队列示意图 非完全二叉树队列示意图 区别 3.代码 执行过程 完整代码 运行结果 1.知识回顾 完全二叉树和非完全二叉树参见100.【C语言】数据结构之二叉树的基本知识文章 2.分析 使用层序遍历(队列),核心思想参见109.【C语言】数据结…

ArcGIS教程(007):制作中国行政区划图

文章目录 000:数据准备001:利用地理数据制作中国行政区划图000:数据准备 通过网盘分享的文件:ArcGIS教程(007):中国行政区划图教程练习数据.zip 链接: https://pan.baidu.com/s/1nMiRYD-dbv2S0DoeQzR87g?pwd=3535 提取码: 3535001:利用地理数据制作中国行政区划图 ne_…

【安卓开发】【Android Studio】启动时报错“Unable to access Android SDK add-on list”

一、问题描述 在启动Android Studio时,软件报错:Unable to access Android SDK add-on list,报错截图如下: 二、原因及解决方法 初步推测是由于网络节点延迟,无法接入谷歌导致的。点击Cancel取消即可。

Debezium OracleStreamingChangeEventSourceMetrics 分析

Debezium OracleStreamingChangeEventSourceMetrics 分析 目录 1. 概述2. 核心指标3. 实现分析4. 使用场景5. 监控示例6. 最佳实践7. 总结1. 概述 OracleStreamingChangeEventSourceMetrics 是 Debezium Oracle 连接器中的度量指标收集组件,主要负责: 收集连接器运行时的各…

Linux更改远程默认SSL端口

1、登录Linux服务器 2、编辑ssh服务配置文件:vi /etc/ssh/sshd_config 光标移至“#Port 22”位置,按“i”进入编辑模式,然后键盘按一下回车键,新增一行 Port 2022 编辑好,先按ESC键,再输入:wq 保存退出.&…

使用create-react-app创建工程时报错处理

1:全局安装create-react-app npm install -g create-react-app 2:切换到项目要创建的目录下 cd /d G:\vsCode_project\react 3:使用脚手架命令创建工程 create-react-app 项目名 项目名命名要遵循npm包命名规范:数字、小写字…