opencv图像处理

1、图像滤波处理

通过滤波来提取图像特征,消除噪声。

常用滤波方式有:均值滤波、高斯滤波、中值滤波、双边滤波。

  • 高斯滤波:
blur_gray = cv2.GaussianBlur(orgGray, (kernel_size, kernel_size), 0)

orgGray:灰度图像;kernel_size:高斯核的大小;sigma:高斯标准差,默认为0。

  • 中值滤波:对滤波模板内的所有元素进行排序,取排序序列的中值作为中心像素。
medianFiltered = cv2.medianBlur(src, ksize)

src:待中值滤波的输入图像;ksize:中值滤波模板大小。

  • 均值滤波:对滤波模板内的所有像素进行求和再求平均值,再将均值复制给所有的中心像素。

2、图像边缘提取

edges_image = cv2.Canny(blur_gray, 20, 150, apertureSize=3, L2gradient=False)

blur_gray:输入要检测的灰度图

3、创建掩膜,提取兴趣区

思路:

生成一个与原图大小维度一致的mask矩阵;

对照原图在该mask上构建感兴趣区域,这里为多边形;

利用opencv的cv2.fillPoly()函数对多边形轮廓进行填充;

利用opencv的cv2.bitwise_and()函数与原图像进行与运算,保留感兴趣原图像。

# 生成掩膜,提取ROI
mask = np.zeros_like(image)
vertices = np.array([[512, 391], [517, 441], [620, 426], [618, 379]],dtype=np.int32)  
cv2.fillPoly(mask, [vertices], (255,255,255))
masked_image = cv2.bitwise_and(image,mask)
cv2.imshow('masked_image', masked_image)

 cv2.bitwise_and():对两幅图像进行按位“与”操作。

4、直线检测

霍夫变换:

lines = cv2.HoughLinesP(masked_image, 1, np.pi / 180, threshold=45, minLineLength=30, maxLineGap=60)

threshold:霍夫平面累加阈值,值越大,检测出的直线越少,minLineLength:线段最小长度, maxLineGap:最大允许断裂长度

检测到的直线绘制:

if lines is not None:for line in lines:x1, y1, x2, y2 = line[0] cv2.line(line_image, (x1, y1), (x2, y2), (0, 255, 0), 2)

5、轮廓检测

# 将图像转换为灰度图
orgGray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges_image = cv2.Canny(orgGray, 30, 150, apertureSize=3, L2gradient=False)
contours, _ = cv2.findContours(edges_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)    
# 遍历轮廓并绘制
for contour in contours: cv2.drawContours(image, [contour], 0, (0, 0, 255),1)cv2.imshow("contours", image)

 计算轮廓周长:

perimeters =  cv2.arcLength(contour, True)

计算轮廓面积:

area = cv2.contourArea(contour)

绘制轮廓最小矩形并绘制:

rect = cv2.minAreaRect(contour)
# 计算矩形框的四个顶点坐标
box = cv2.boxPoints(rect)
box = np.int0(box)
print("box",box)
cv2.drawContours(image, [box], 0, (0, 0, 255),1)
cv2.imshow("contours", image)

6、图像膨胀腐蚀

图像的膨胀(dilation)和腐蚀(erosion)主要用来寻找图像中的极大区域和极小区域。

膨胀类似于“领域扩张”,将图像的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大。

腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。

参考链接 https://blog.51cto.com/u_15467780/4851994

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

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

相关文章

Amazon云计算AWS之[2]弹性计算云EC2

文章目录 说明EC2基本架构Amazon机器映象(AMI)实例(Instance)弹性块存储(EBS) EC2关键技术地理区域和可用区域EC2通信机制弹性负载均衡监控服务自动缩放服务管理控制台 EC2安全及容错机制EC2弹性IP地址 说明…

STM32 HAL库F103系列之IIC实验

IIC总线协议 IIC总线协议介绍 IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。 总线就是传输数据通道 协议就是传输数据的规则 IIC总线结构图 ① 由时钟线SCL和数据线SDA组成,并且都接上拉电阻…

线性代数基础3 行列式

行列式 行列式其实在机器学习中用的并不多,一个矩阵必须是方阵,才能计算它的行列式 行列式是把矩阵变成一个标量 import numpy as np A np.array([[1,3],[2,5]]) display(A) print(矩阵A的行列式是:\n,np.linalg.det(A))array([[1, 3],[2, …

【C++打怪之路Lv3】-- 类和对象(上)

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…

C++链表操作入门

数据结构基础:链表操作入门 数据结构基础:链表操作入门链表的基本概念链表的基本操作输出链表插入节点删除节点查找值 完整的链表操作示例结语 数据结构基础:链表操作入门 在计算机科学中,数据结构是组织和存储数据的方式&#x…

论文解读:(CAVPT)Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model

v1文章名字:Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model v2文章名字:Class-Aware Visual Prompt Tuning for Vision-Language Pre-Trained Model 文章汇总 对该文的改进:论文解读:(VPT)Visual Prompt …

ClickHouse 数据类型、表引擎与TTL

文章目录 数据类型注意事项 表引擎1.TinyLog 引擎2.MergeTree 引擎3.ReplacingMergeTree 引擎4.AggregatingMergeTree 引擎5.SummingMergeTree 引擎6.CollapsingMergeTree 引擎7.Distributed 引擎 TTL列级 TTL表级TTL 数据类型 ClickHouse 数据类型Java 数据类型数据范围UInt8…

在控制台实现贪吃蛇

在控制台实现贪吃蛇 前备知识Win32APICOORD这个结构体的声明如下:GetStdHandle 函数GetConsoleCursorInfo 函数SetConsoleCursorInfo 函数 SetConsoleCursorPosition 函数getAsyncKeyState 函数 控制台窗口的大小以及字符打印介绍控制台中的坐标宽字符及本地化介绍s…

使用 Gradio 的“热重载”模式快速开发 AI 应用

在这篇文章中,我将展示如何利用 Gradio 的热重载模式快速构建一个功能齐全的 AI 应用。但在进入正题之前,让我们先了解一下什么是重载模式以及 Gradio 为什么要采用自定义的自动重载逻辑。如果你已熟悉 Gradio 并急于开始构建,请直接跳转到第…

UE4 拍摄、保存并浏览相册

效果: 1.新建CameraActor类 2.修改截图保存路径 3.编写BP_Camera蓝图 注意路径 Save Image函数要在执行拍照和BeginPlay事件执行一次 按钮执行拍摄事件 3.编写UMG蓝图 技巧:让Index加1、减1循环赋值 4.把BP_Camera挂在玩家上

SVN--基本原理与使用(超详细)

目录 一、SVN概述二、SVN服务端软件安装三、SVN服务端配置四、SVN客户端软件安装与使用五、SVN三大指令六、SVN图标集与忽略功能6.1 图标集6.2 忽略功能 七、SVN版本回退八、SVN版本冲突九、SVN配置多仓库与权限控制9.1 配置多仓库9.2 权限控制 十、服务配置与管理十一、模拟真…

新建云仓库

1.GitHub新建云仓库: LICENSE:开源许可证;README.md:仓库说明文件;开源项目;cocoaPodsName.podspec: CocoaPods项目的属性描述文件。 2.Coding新建云仓库: 备注: Coding新建项目:

每日一题(力扣45):跳跃游戏2--贪心

由于题目已经告诉了我们一定可以跳到,所以我们只需去考虑前进最快的方法。即 判断当前下一步能跳的各个位置中,哪个能带你去去向最远的地方(why? 因为其他位置所能提供的最大范围都没最远那个大,所以最远的那个已经可以…

The Log-Structured Merge-Tree (LSM-Tree) 论文阅读笔记

原论文:The Log-Structured Merge-Tree (LSM-Tree) LSM-Tree的简介和关键技术要点 LSM-Tree(Log-Structured Merge-Tree)是一种为高吞吐量读写操作优化的数据结构,特别适用于写入密集型的应用场景。它由Patrick O’Neil等人开发…

Vue 组件分类、局部注册和全局注册

文章目录 背景知识组件分类安装 vue-cli示例设置组件局部注册设置组件全局注册 背景知识 开发 Vue 的两种方式: 核心包传统开发模式:基于 html / css / js 文件,直接引入核心包,开发 Vue。工程化开发模式:基于构建工…

国产麒麟系统下打包electron+vue项目(AppImage、deb)

需要用到的一些依赖包、安装包以及更详细的打包方法word以及麒麟官网给出的文档都已放网盘,链接在文章最后!!!!!!!!!!!!&a…

13 c++版本的五子棋

前言 呵呵 这大概是 大学里面的 c 五子棋了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 然后 貌似 放在 win10 上面执行 还有一些问题, 渲染的, 应该很好调整 五子棋 #include<Windows.h> #include<io…

elaticsearch windows安装

es下载地址 https://www.elastic.co/cn/downloads/elasticsearch https://www.elastic.co/cn/downloads/past-releases#elasticsearch 在这里插入图片描述 下载直接解压&#xff0c;解压后目录 双击bin目录下的elasticsearch.bat开启服务 注意&#xff1a;9300 端口为 Elas…

阶跃星辰:探索智能科技的星辰大海

引言 在当今快速发展的科技时代&#xff0c;人工智能已经成为推动社会进步的重要力量。阶跃星辰&#xff0c;正是在这一背景下诞生的。 阶跃星辰是一家专注于通用人工智能探索的公司&#xff0c;成立于2023年4月。该公司的创始团队由一群对人工智能充满热情和渴望的人组成&am…

半导体行业的隐形翅膀:国产RFID技术突破封锁,助力生产

半导体行业的隐形翅膀&#xff1a;国产RFID技术突破封锁&#xff0c;助力生产 RFID技术&#xff0c;简单来说&#xff0c;就是一种自动识别技术&#xff0c;通过无线电波实现对标签信息的读取和写入。而这些标签&#xff0c;就像给物品贴上的小标签&#xff0c;上面存储着它们…