opencv库中的函数应用

ops/2024/12/12 14:00:04/

opencv库中的函数应用

  • 二值化函数
    • 功能
    • 参数
    • 返回值
    • 应用
    • 例子
  • 自适应二值化函数
    • 功能
    • 参数
    • 返回值
    • 应用
    • 例子
  • 腐蚀函数
    • 功能
    • 参数
    • 返回值
    • 应用
    • 例子
  • 膨胀函数
    • 功能
    • 参数
    • 返回值
    • 例子
  • 仿射变换函数
    • 功能
    • 参数
    • 返回值
    • 例子
  • 透视变换函数
    • 功能
    • 参数
    • 返回值
    • 例子

二值化函数

函数:cv2.threshold(img, thresh, maxVal, thresholdType)

功能

将一个灰度图变为二值图像(即由0-255变为0-1)
实现方式:选取全局阈值,将整幅图像分成二值图像。如果像素值大于阈值,则为其分配0或者1,否则为其分配另一个值

参数

img:灰度图
thresh:阈值
maxVal:最大值(也有可能是最小值看,参数四的分割方式)
thresholdType:分割方式主要包括

  • cv2.THRESH_BINARY:如果像素值大于阈值,则将其设置为最大值;否则,将其设置为0。
  • cv2.THRESH_BINARY_INV:如果像素值大于阈值,则将其设置为0;否则,将其设置为最大值。
  • cv2.THRESH_TRUNC:如果像素值大于阈值,则将其设置为阈值;否则,保持不变。
  • cv2.THRESH_TOZERO:如果像素值大于阈值,则保持不变;否则,将其设置为0。
  • cv2.THRESH_TOZERO_INV:如果像素值大于阈值,则将其设置为0;否则,保持不变。

返回值

分割后的图像

应用

抠图,可以通过该方法选择出自己需要的图像

例子

输出结果

python">import cv2
import matplotlib.pyplot as plt
ret,thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
plt.subplot(121)
plt.imshow(img_gray,cmap='gray')
plt.subplot(122)
plt.imshow(thresh1,cmap='gray')

自适应二值化函数

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

功能

将一个灰度图变为二值图像(即由0-255变为0-1)
实现方式:自动选取全局阈值,将整幅图像分成二值图像。如果像素值大于阈值,则为其分配0或者1,否则为其分配另一个值

参数

src:输入图像,应该是灰度图像。
maxValue:当像素值大于(或小于,取决于阈值类型)阈值时,所赋予的最大值。
adaptiveMethod:自适应阈值方法,有两种选择:
cv2.ADAPTIVE_THRESH_MEAN_C:使用邻域块的平均值作为阈值。
cv2.ADAPTIVE_THRESH_GAUSSIAN_C:使用邻域块的加权和作为阈值,权重由高斯窗口确定。
thresholdType:阈值类型,决定了如何应用阈值。常见的类型有:
cv2.THRESH_BINARY:如果像素值大于阈值,则将其设置为最大值;否则,将其设置为0。
cv2.THRESH_BINARY_INV:如果像素值大于阈值,则将其设置为0;否则,将其设置为最大值。
blockSize:邻域块的大小,必须是奇数。
C:一个常数,用于调整阈值。通常设置为0。

返回值

返回图案

应用

例子

python">img=cv2.imread("imge.jpg",0)
th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 4)
th3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 17, 6)
th4 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 3, 6)
plt.subplot(141), plt.imshow(img, cmap='gray')
plt.subplot(142), plt.imshow(th2, cmap='gray')
plt.subplot(143), plt.imshow(th3, cmap='gray')
plt.subplot(144), plt.imshow(th4, cmap='gray')
plt.show()

腐蚀函数

dst = cv2.erode(src, kernel, iterations)

功能

主要用于消除图像中的噪声和细小物体。

参数

src:输入图像。
kernel:腐蚀操作的核,通常是一个小的矩形或椭圆形结构元素。
iterations:腐蚀操作的迭代次数,默认为1。
返回值:

返回值

返回处理后的图案

应用

消除图案中的噪声

例子

在这里插入图片描述

python">ret = np.ones((5,5), dtype=np.uint8)
img=cv2.imread("sudoku.jpg",0)
ret = np.ones((5,5),dtype=np.uint8)
# dilation = cv2.dilate(img, ret)  
erosion = cv2.erode(img, ret)
# dil = cv2.cvtColor(dilation, cv2.COLOR_BGR2RGB)
ero = cv2.cvtColor(erosion, cv2.COLOR_BGR2RGB)
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.axis('off')
plt.subplot(122)
plt.imshow(ero, cmap='gray')
plt.title('Eroded Image')
plt.axis('off')
plt.show()

膨胀函数

dst = cv2.dilate(src, kernel, iterations)

功能

用于扩大图像中的白色区域(高亮部分

参数

src:输入图像。
kernel:膨胀操作的核,通常是一个小的矩形或椭圆形结构元素。
iterations:膨胀操作的迭代次数,默认为1。

返回值

处理后的图案

例子

在这里插入图片描述

python">ret = np.ones((5,5), dtype=np.uint8)
img=cv2.imread("sudoku.jpg",0)
ret = np.ones((5,5),dtype=np.uint8)
dilation = cv2.dilate(img, ret)  
# erosion = cv2.erode(img, ret)
dil = cv2.cvtColor(dilation, cv2.COLOR_BGR2RGB)
# ero = cv2.cvtColor(erosion, cv2.COLOR_BGR2RGB)
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.axis('off')
plt.subplot(122)
plt.imshow(dil, cmap='gray')
plt.title('Eroded Image')
plt.axis('off')
plt.show()

仿射变换函数

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

功能

进行变换,保持二维平面上的直线和平行线

参数

src:输入图像。
M:2x3的仿射变换矩阵。
dsize:输出图像的大小。
flags:插值方法,默认为 cv2.INTER_LINEAR。
borderMode:边界像素模式,默认为 cv2.BORDER_CONSTANT。
borderValue:边界值,默认为0。

返回值

处理后的图案## 应用

例子

在这里插入图片描述

python">import cv2
import numpy as np
# 读取灰度图像
img = cv2.imread('sudoku.jpg', 0)
# 创建仿射变换矩阵
M = np.float32([[1, 0, 100], [0, 1, 50]])
# 应用仿射变换
affine = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
# 显示结果
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.axis('off')
plt.subplot(122)
plt.imshow(affine, cmap='gray')
plt.title('Eroded Image')
plt.axis('off')
plt.show()

透视变换函数

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

功能

将图像投影到一个新的视点

参数

src:输入图像。
M:3x3的透视变换矩阵。
dsize:输出图像的大小。
flags:插值方法,默认为 cv2.INTER_LINEAR。
borderMode:边界像素模式,默认为 cv2.BORDER_CONSTANT。
borderValue:边界值,默认为0。

返回值

变换后的图案

例子

python">import cv2
import numpy as np# 读取灰度图像
img = cv2.imread('sudoku.jpg', 0)# 创建透视变换矩阵
M = np.float32([[1, 0, 100], [0, 1, 50], [0, 0, 1]])# 应用透视变换
perspective = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0]))# 显示结果
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.axis('off')
plt.subplot(122)
plt.imshow(perspective, cmap='gray')
plt.title('Eroded Image')
plt.axis('off')
plt.show()

http://www.ppmy.cn/ops/141256.html

相关文章

SpringMVC 请求参数接收

目录 请求 传递单个参数 基本类型参数传递 未传递参数 ?传递参数类型不匹配 传递多个参数 传递对象 后端参数重命名 传递数组 传递集合 传递JSON数据 JSON是什么 JSON的优点 传递JSON对象 获取URL中的参数 文件上传 在浏览器与程序进行交互时,主要…

AutoMQ 如何在 AWS 上避免 Kafka 跨 AZ 网络传输费用

文章导读:AutoMQ与海外开发者一起深入剖析了关于 Apache Kafka 在云计算环境下的操作和挑战,特别是在跨可用区(AZ)传输中的高成本问题。分析了 AutoMQ 如何通过优化服务发现,确保客户端始终与同一 AZ 的 broker 通信&a…

ICoT:交替模态思维链,提升VLMs推理能力

引言 传统的链式思考(CoT)方法在大型语言模型(LLMs)中已经证明是有效的,它通过引导模型产生一系列中间的自然语言推理步骤来增强模型的推理能力。然而,当这种方法应用于VLMs时,仅使用文本理由难…

同步数据至ES时,数据丢失问题处理

问题背景: 数据同步到es过程中,发现数据丢失问题,原因正是因为写入索引前会先删除索引导致! 总体流程: 使用别名索引Eredis获取当前索引B(即E指向B),获取新索引A初始化新索引A,将数据存储到新…

uniapp 微信小程序webview 和 h5数据通信

项目是uniapp编写,因为是先开发了h5和app,小程序是突然要用的,做兼容开发已经来不及,由于微信小程序webview载入h5 因为通信必须要特殊限制(网页向小程序 postMessage 时,会在以下特定时机触发并收到消息&a…

【1】Python交叉编译到OpenHarmony标准系统运行(arm32位)

本文介绍如何Python语言如何在OpenHarmony标准系统运行,包括5.0r和4.1r以及4.0r,和未来版本的OpenHarmony版本上。 Python语言在OpenHarmony上使用,需要将Python解释器CPython移植到OpenHarmony标准系统。通过交叉编译的方式。 首先来了解几个概念: CPython 是 Python 编…

22.在Vue3中使用OpenLayers加载远程 KML 文件示例

前言 OpenLayers 是一个功能强大的开源地图库,广泛应用于前端 GIS(地理信息系统)开发中。 而 KML(Keyhole Markup Language)是一种用于表示地理空间数据的标准文件格式,通常用于存储点、线、多边形等地理要…

单片机:实现生日快乐歌(附带源码)

单片机实现《生日快乐歌》 实现一个“生日快乐歌”是单片机应用中的一个经典项目,通过它可以学习如何控制声音输出、使用定时器、以及如何处理按键输入等功能。本项目将利用单片机生成《生日快乐歌》的音频信号,并通过蜂鸣器播放出来。 项目目标 本项…