OpenCV 功能函数介绍

一, 二值化函数

功能:

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

参数:

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.mzph.cn/web/62940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)

发现了一个使用Selenium的find_element模块,快速获取文字和表格的方法,很实在,以后爬网的时候,就不用beautifulSoup 和 pandas的read_html 混起来用了! 文字部分:实现网络节点下,某个节点下的其…

【AI知识】有监督学习之回归任务(附线性回归代码及可视化)

1. 回归的基本概念 在机器学习的有监督学习中,回归(Regression)是一种常见的任务,它的目标是通过观察数据来建立一个模型,用一个或多个自变量来预测因变量的值。 回归分析通常用于: a.预测,基于…

边缘计算+人工智能:让设备更聪明的秘密

引言:日常生活中的“智能”设备 你是否发现,身边的设备正变得越来越“聪明”? 早上醒来时,智能音箱已经根据你的日程播放舒缓音乐;走进厨房,智能冰箱提醒你今天的食材库存;而在城市道路上&…

JVM 双亲委派模型以及垃圾回收机制

目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程,其实就是一个 JVM 虚拟机。 而进程是…

ansible自动化运维(四)jinjia2模板

Jinjia2模板 前面说到playbook组成的时候,有介绍到template模块,而template模块对模板文件进行渲染时,使用的就是jinja2模板引擎,jinja2本身就是基于python的模板引擎,所以下面先来了解一下jinjia2模板的一些用法 基…

Windows安装Jira

下载 Download Jira Data Center | Atlassian https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-10.3.0-x64.exe 以管理员身份安装,否则弹出以下提醒 创建和配置MySQL数据库:参照 Connecting Jira applicat…

uniapp - 微信小程序

一、background-image 大图不显示的问题 解决方法: 1、使用网络地址;2、使用 base64 urlTobase64(filePath) {// #ifdef MP-WEIXINlet img ${filePath},imgBase64 wx.getFileSystemManager().readFileSync(img, "base64"),base64Url data:…

DETR: End-to-End Object Detection with Transformers论文学习

论文地址:https://arxiv.org/pdf/2005.12872 代码地址:https://github.com/facebookresearch/detr 相关学习视频:https://space.bilibili.com/94779326/lists?sid1531941 标题前言: DETR 是 Facebook 团队于 2020 年提出的基于…

Vue3状态管理:Pinia架构设计分析

Vue3状态管理:Pinia架构设计分析 介绍 在Vue.js开发中,状态管理是一个非常重要的部分。随着Vue3的发布,Pinia作为一种新的状态管理架构也相继问世。本文将对Pinia架构进行深入分析,帮助读者了解其设计原理、特点以及在实际项目中的应用。 架构…

【IDEA】启动报错

今天启动IDEA报错 报错信息: Cannot connect to already running IDE instance. Exception: Process 5,444 is still running 打开任务管理器,关掉进程ID5444的任务

socket编程UDP-实现停等机制(接收确认、超时重传)

在下面博客中,我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程,并附上完整源码。 socket编程UDP-文件传输&模拟TCP建立连接脱离连接(进阶篇)_udp socket发送-CSDN博客 下面博客实现的是滑动窗口机制: sock…

python xpath解析笔记

与bs4的区别 bs4有很多属性和方法,而xpath只有一个方法,是通过不同的xpath表达式实现很多功能的。 html例子 定位 tree.xpath(‘/html/head/title’) 返回列表。 开头的斜杠表示从根节点遍历。 中间的斜杠表示层级。(相当于bs4中的>…

Q学习(Q-Learning)详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

树状数组详解

概述 树状数组(Binary Indexed Tree,简称BIT),是一种数据结构,用于处理区间查询和更新问题。它是一种可以高效地在对数级别时间复杂度内进行单点更新和区间查询的数据结构。树状数组通常用于解决以下两类问题&#xf…

freeswitch(开启支持MCU视频会议,使用mod_av模块)

亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: 有些场景想使用视频会议MCU融合画面进行开会使用方法: 第一步:下载插件 yum install -y epel-release yum install

【大数据技术基础】【记录Ubuntu 16.04升级到18.04】Ubuntu的一个版本升级到另一个版本

在 Ubuntu 操作系统中进行软件更新和系统升级 Ubuntu Kylin 16.04 LTS 系统进行系统升级到 Ubuntu 18.04.6 LTS 版本 升级提示:系统弹出提示框,告知用户有新版本的 Ubuntu 可用,询问用户是否想要升级。 认证窗口:显示了一个认证…

这是一个vue3 + scss的数字滚动效果

介绍: 当数字变化时&#xff0c;只改变变化的数字位&#xff0c;其余的不变&#xff0c;可以递增、递减、骤变、负数也可以&#xff0c;但是样式要根据具体的项目需求去改&#xff1b; 效果1、增加数字&#xff1a; 效果2、减少数字&#xff1a; 使用方法&#xff1a; <te…

TortoiseGit的下载、安装和配置

一、TortoiseGit的简介 tortoiseGit是一个开放的git版本控制系统的源客户端&#xff0c;支持Winxp/vista/win7.该软件功能和git一样 不同的是&#xff1a;git是命令行操作模式&#xff0c;tortoiseGit界面化操作模式&#xff0c;不用记git相关命令就可以直接操作&#xff0c;读…

最新版Chrome浏览器加载ActiveX控件之Adobe PDF阅读器控件

背景 Adobe PDF阅读器控件是一个ActiveX控件&#xff0c;用于在Windows平台上显示和操作PDF文件。它提供了一系列方法和属性&#xff0c;可以实现对PDF文件的加载、显示、搜索、打印、保存等操作。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件…

源码分析之Openlayers中的控件篇Control基类介绍

概述 Openlayers 中内置了9类控件&#xff0c;这9类控件都是基于Control类&#xff0c;而Control类则是继承于BaseObject类&#xff0c;如下图所示&#xff1a; 如上&#xff0c;这9类控件分别是&#xff1a; Attribution&#xff1a;属性控件FullScreen:全屏控件MousePositi…