OpenCV 功能函数介绍

一, 二值化函数

功能:

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

参数:

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

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

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

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

                                  )

返回值:

二值化的返回值有2个

1:实际使用的阈值

2:二值化的图像

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

应用:

import cv2

img = 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 cv2

img = 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 cv2

img = 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 cv2

img = 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 cv2

img = 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 np



img = 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kubeadm安装K8s集群之高可用组件keepalived+nginx及kubeadm部署

系列文章目录 1.kubeadm安装K8s集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 3.kubeadm安装K8s集群之master节点加入 4.kubeadm安装K8s集群之worker1节点加入 kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 1.安装kubeadm…

细说STM32F407单片机SPI基础知识

目录 一、 SPI接口和通信协议 1、 SPI硬件接口 (1)MOSI(Master Output Slave Input) (2)MISO(Master Input Slave Output) (3)SCK 2、SPI传输协议 (1)CPHA0时的数据传输时序 …

【图像处理】利用numpy、opencv、python实现车牌检测

| 利用opencv实现车牌检测 整体流程涉及5个部分 图像通道转换对比度增强边缘连接二值化边界区域裁剪 图像通道转换 将RGB图像转换为HSV图像,仅保留V通道。V通道表示颜色的明暗,常用于图像对比度拉伸、直方图均衡化等流程。 原图像: V通…

结构变量的占用多少个字节

1、在linux中,这种写法比较清晰 struct gpio_led_data { u8 can_sleep; //如果定义了结构变量,则该成员占用1个字节 u8 blinking; //如果定义了结构变量,则该成员占用1个字节 }; struct gpio_leds_priv { int num_leds; //如…

[COLM 2024] V-STaR: Training Verifiers for Self-Taught Reasoners

本文是对 STaR 的改进方法,COLM 是 Conference On Language Models,大模型领域新出的会议,在国际上很知名,不过目前还没有被列入 ccf list(新会议一般不会列入);作者来自高校、微软研究院和 Goo…

uni-app Android平台上架要求的隐私政策提示配置方法【跨端开发系列】

文章目录 前言📖一、前言二、DCloud 数据采集说明三、配置方式3.1 HBuilderX3.2.1及以上版本配置方式3.2 HBuilderX3.2.0及以下版本配置方法3.3 模板提示框3.4 无提示框 四、离线打包配置方式五、模板提示框六、二次确认提示框七、国际化八、隐私协议内容需要注意的…

Xcode

info.plist Appearance Light 关闭黑暗模式 Bundle display name 设置app名称,默认为工程名 Location When In Use Usage Description 定位权限一共有3个key 1.Privacy - Location When In Use Usage Description 2.Privacy - Location Always and When In U…

auto-gptq安装以及不适配软硬件环境可能出现的问题及解决方式

目录 1、auto-gptq是什么?2、auto-gptq安装3、auto-gptq不正确安装可能会出现的问题(1)爆出:CUDA extension not installed.(2)没有报错但是推理速度超级慢 1、auto-gptq是什么? Auto-GPTQ 是一…

惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法

惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法,记录维修那点事儿,普通维修工的日常维修点滴; 惠普Laser Jet MFP M437nda复印机成像装置严重不足维修方法 如果复印及打印的效果没有问题的情况下我们也可以不更换套鼓及显影剂,那么不更换套鼓及…

【2025最新版】Stable diffusion汉化版安装教程(附SD安装包),一键激活,永久免费!

如何安装并学习使用Stable Diffusion呢? 其实,安装SD的过程并不复杂,只需按照简单的步骤操作,几分钟内就能完成安装,不论是Windows系统还是Mac系统,都能轻松应对。

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用(一)精准定位元素(二)应对动态网页(三)数据结构化提取 二、Xpath 的常用方法(一)节点选取(二)谓词筛选&#xff0…

RabbitMQ个人理解与基本使用

目录 一. 作用: 二. RabbitMQ的5中队列模式: 1. 简单模式 2. Work模式 3. 发布/订阅模式 4. 路由模式 5. 主题模式 三. 消息持久化: 消息过期时间 ACK应答 四. 同步接收和异步接收: 应用场景 五. 基本使用 &#xff…

网络工程师常用软件之配置对比软件

老王说网络:网络资源共享汇总 https://docs.qq.com/sheet/DWXZiSGxiaVhxYU1F ☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝ 我们经常在项目或者运维中对设备的config进行变更&am…

嵌入式驱动开发详解15(电容触摸屏gt9147)

文章目录 前言电容触摸屏特点MT触摸消息电容触摸屏协议电容屏触摸时序Type A 触摸点信息上报时序Type B 触摸点信息上报时序 多点触摸所使用到的API函数 驱动部分驱动框图设备树节点修改设备树引脚配置设备节点配置 具体驱动开发I2C驱动框架I2C框架内部实现 参考文献 前言 随着…

antdv-<a-button>中属性的使用

UI组件库(User Interface Component Library)是一种预先构建好的、可重用的用户界面元素集合,旨在帮助开发者更快速、更简便地构建用户界面。这些组件通常包括按钮、表单、导航栏、模态框等,能够提供一致的外观和交互风格&#xf…

win服务器的架设、windows server 2012 R2 系统的下载与安装使用

文章目录 windows server 2012 R2 系统的下载与安装使用1 windows server 2012 的下载2 打开 VMware 虚拟机软件(1)新建虚拟机(2)设置虚拟机(3)打开虚拟机 windows server 2012(4)进…

【ArcGIS微课1000例】0135:自动生成标识码(长度不变,前面自动加0)

文章目录 一、加载实验数据二、BSM计算方法一、加载实验数据 加载专栏《ArcGIS微课实验1000例(附数据)》配套数据中0135.rar中的建筑物数据,如下图所示: 打开属性表,BSM为数据库中要求的字段:以TD_T 1066-2021《不动产登记数据库标准》为例: 计算出来的BSM如下图: 二、B…

康谋方案 | 多源相机数据采集与算法集成测试方案

目录 一、相机组成 二、多源相机采集与测试方案 三、应用案例分享 四、结语 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进…

陪玩系统小程序源码/游戏陪玩APP系统用户端有哪些功能?游戏陪玩小程序APP源码开发

多客陪玩系统-游戏陪玩线下预约上门服务等陪玩圈子陪玩社区系统源码 陪玩系统源码,高质量的陪玩系统源码,游戏陪玩APP源码开发,语音陪玩源码搭建: 线上陪玩活动组局与线下家政服务系统的部署需要综合考虑技术选型、开发流程、部署流程、功能实…

运维实战:K8s 上的 Doris 高可用集群最佳实践

今天我们将深入探讨::如何在 K8s 集群上部署 Compute storage coupled(存算耦合) 模式的 Doris 高可用集群? 本文,我将为您提供一份全面的实战指南,逐步引导您完成以下关键任务: 配…