1-9 图像膨胀 opencv树莓派4B 入门系列笔记

news2024/11/13 9:04:29

目录

一、提前准备

二、代码详解

kernel = np.ones((3, 3), np.uint8)

_, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

dilated_image = cv2.dilate(binary_image, kernel, iterations=1)

三、运行现象

四、完整代码

五、完整工程贴出


一、提前准备

        1、树莓派4B 及 64位系统

        2、提前安装opencv库 以及 numpy库

        3、保存一张图片

二、代码详解

1、读取灰度图以及彩色图

# coding: utf-8 
# 图像膨胀的目的: 1、膨胀操作主要是使图像中高亮部分扩张,使得膨胀后的图像拥有比原图更大的高亮区域。2、将有价值的信息放大
 
import cv2
import numpy as np

#从指定目录读取一张图片
image=cv2.imread('/home/raspberry4B/Pictures/MD.jpg',0)
image2=cv2.imread('/home/raspberry4B/Pictures/MD.jpg',-1)

2、图像膨胀操作

#定义膨胀操作的结构元素
kernel=np.ones((3,3),np.uint8)
 
#图像二值化处理:使用127作为阈值  
_, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)  
 
#进行图像膨胀操作(对二值图进行膨胀),iterations表示膨胀次数
dilated_image=cv2.dilate(binary_image,kernel,iterations=1)
dilated_image2=cv2.dilate(image2,kernel,iterations=1)

kernel = np.ones((3, 3), np.uint8)

  • 功能: 定义膨胀操作的结构元素。
  • 参数:
    • (3, 3): 结构元素的大小为3x3的矩阵。
    • np.uint8: 数据类型,表示无符号8位整数。

_, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

  • 功能: 将灰度图像进行二值化处理,生成二值图像。
  • 参数:
    • image: 输入的灰度图像。
    • 127: 阈值。小于此值的像素设置为0,大于等于此值的像素设置为255。
    • 255: 最大值。大于等于阈值的像素设置为该值。
    • cv2.THRESH_BINARY: 二值化模式,将像素值二分为0和255。

dilated_image = cv2.dilate(binary_image, kernel, iterations=1)

  • 功能: 对二值图像进行膨胀操作。
  • 参数:
    • binary_image: 输入的二值图像。
    • kernel: 进行膨胀操作的结构元素。
    • iterations=1: 膨胀操作的次数,表示重复膨胀操作一次。

3、图像显示

while True:
	#显示原始图\二值图\腐蚀后的图
	cv2.imshow('Original image',image)
	cv2.imshow('Dilated image',dilated_image)
	cv2.imshow('Binary Image', binary_image)  

	cv2.imshow('Original image2',image2)
	cv2.imshow('Dilated image2',dilated_image2)
	#等待按下‘q’退出
	key=cv2.waitKey(1)
	if key&0XFF==ord('q'):
		break
#释放所有资源
cv2.destroyAllWindows()

三、运行现象

增加膨胀次数效果会更明显

图像膨胀的目的:

1、膨胀操作主要是使图像中高亮部分扩张,使得膨胀后的图像拥有比原图更大的高亮区域

2、将有价值的信息放大

四、完整代码

# coding: utf-8 
# 图像膨胀的目的: 1、膨胀操作主要是使图像中高亮部分扩张,使得膨胀后的图像拥有比原图更大的高亮区域。2、将有价值的信息放大
 
import cv2
import numpy as np

#从指定目录读取一张图片
image=cv2.imread('/home/raspberry4B/Pictures/MD.jpg',0)
image2=cv2.imread('/home/raspberry4B/Pictures/MD.jpg',-1)
#定义膨胀操作的结构元素
kernel=np.ones((3,3),np.uint8)
 
#图像二值化处理:使用127作为阈值  
_, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)  
 
#进行图像膨胀操作(对二值图进行膨胀),iterations表示膨胀次数
dilated_image=cv2.dilate(binary_image,kernel,iterations=1)
dilated_image2=cv2.dilate(image2,kernel,iterations=1)

while True:
	#显示原始图\二值图\腐蚀后的图
	cv2.imshow('Original image',image)
	cv2.imshow('Dilated image',dilated_image)
	cv2.imshow('Binary Image', binary_image)  

	cv2.imshow('Original image2',image2)
	cv2.imshow('Dilated image2',dilated_image2)
	#等待按下‘q’退出
	key=cv2.waitKey(1)
	if key&0XFF==ord('q'):
		break
#释放所有资源
cv2.destroyAllWindows()

五、完整工程贴出

(持续更新中)opencv树莓派4B入门系列笔记6~10完整工程源码资源-CSDN文库

持续更新中……

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

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

相关文章

【vue css】background设置背景图片不显示问题

问题: 如上图所示,添加背景图片页面没有显示 解决: 添加background-position: center center 即可显示 但是不知道为什么添加这个属性就可以,求大神解惑

端口安全老化细节

我们都知道port-security aging-time命令用来配置端口安全动态MAC地址的老化时间,但是后面还可以加上类型: [SW1-GigabitEthernet0/0/1]port-security aging-time 5 type absolute Absolute time 绝对老化 inactivity Inactivity time相对老化 …

网络协议-SSH

SSH(Secure Shell)协议是一种广泛使用的网络协议,用于安全地进行远程登录和数据传输。SSH协议通过加密技术保证了数据的安全性,防止数据在传输过程中被窃听、篡改或伪造。SSH协议的通信认证过程主要包括以下几个步骤: …

JRebel and XRebel离线安装

近期,使用JRebel and XRebel,发现总是安装不上,可能是网络的原因吧。所以就使用离线方式进行安装。 JRebel 是一款用于 Java 开发的生产力工具。它的主要功能是加速开发周期,通过在不重启 JVM 的情况下即时加载代码变更。这样&…

Class3——Esp32|Thonny——网络连接主机-wifi连接(源代码带教程)

废话不多说——直接上配置源码和图片 一.电脑连接到wifi上(不能是5G) 二.网络调试助手信息设置绑定 1.获取电脑wifi信息 2.设置网络调试助手为一致,然后打开,主机地址是上面的192.168.2.149端口自己设置,UDP然后打开…

1-7 掩膜的运用 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 num_pixels np.sum(mask 255) contours, _ cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) c max(contours, keycv2.contourArea) x, y, w, h cv2.boundingRect(c) M cv2.moments(contours[0]) if contours…

阿里云飞天洛神云网络子系统“齐天”:超大规模云网络智能运维的“定海神针”

云布道师 引言:近日,在南京上秦淮国际文化交流中心举办第八届未来网络发展大会上,阿里云凭借“超大规模云网络智能运维系统”一举斩获由中国通信学会专家组评选的“未来网络领先创新科技成果奖”,本次获奖也体现出阿里云在云网络技…

在VB.net中,如何把20240906转化成日期格式

标题 vb.net中,如何把20240906转化成日期格式 正文 在 VB.NET 中,将一个数字字符串(如 "20240906")转换为日期格式,你可以使用 DateTime.Parse 或 DateTime.TryParse 方法。这些方法可以将符合日期格式的字符…

响应式单位rpx搭配UI产品工具应用

rpx 即响应式 px,一种根据屏幕宽度自适应的动态单位。以 750 宽的屏幕为基准,750rpx 恰好为屏幕宽度 原本的px像素它是一个固定单位,它并不会随着你屏幕的改变而改变,相当于一个死值,不懂得灵活变通 相反,rpx会随着屏幕改变而改变,因为我们设置的高是200…

网络安全基础—加解密原理与数字证书

目录 1) 对称加密和非对称加密 Ⅰ 对称加密算法 Ⅱ 非对称加密算法 Ⅲ 对称和非对称加密比较: 2)数据加密--数字信封 3)数据验证 - 数字签名 4)数字证书 Ⅰ 数字证书格式 Ⅱ 证书的颁发 Ⅲ 证书验证: .验证…

【基础算法总结】双指针

目录 一,双指针算法介绍二,算法原理和代码实现283.移动零1089.复写零202.快乐数11.盛最多水的容器611.有效三角形的个数LRC179.和为s的两个数15.三数之和18.四数之和 三,算法总结 一,双指针算法介绍 双指针算法是基础算法之一&am…

【机器学习】朴素贝叶斯方法的概率图表示以及贝叶斯统计中的共轭先验方法

引言 朴素贝叶斯方法是一种基于贝叶斯定理的简单概率模型,它假设特征之间相互独立。 文章目录 引言一、朴素贝叶斯方法的概率图表示1.1 节点表示1.2 边表示1.3 无其他连接1.4 总结 二、朴素贝叶斯的应用场景2.1 文本分类2.2 推荐系统2.3 医疗诊断2.4 欺诈检测2.5 情…

菜鸟入门Docker

初始Docker Docker的概念 Docker的用途 DOcke的安装 Docker架构 配置Docker镜像加速器 Docker常用命令 Docker服务相关的命令。 Docker镜像相关的命令 Docker容器相关的命令 容器的数据卷 数据卷的概念和作用 配置数据卷 Docker应用部署 Docker部署mysql Docker…

RP2040 C SDK clocks时钟源配置使用

RP2040 C SDK clocks时钟源配置使用 🌿RP2040时钟源API函数文档:https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#group_hardware_clocks 🍁RP2040时钟树: 系统时钟源可以来自外部时钟输入(exte…

<数据集>二维码识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:1601张 标注数量(xml文件个数):1601 标注数量(txt文件个数):1601 标注类别数:1 标注类别名称:[QR] 序号类别名称图片数框数1QR16016286 使用标注工具:l…

外观模式facade

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/facade 为程序库、 框架或其他复杂类提供一个简单的接口 把要做的事全放在一个类里给他做了,然后要用的时候直接创建这个类的实例

springboot项目引入Sentinel熔断

本文是springboot项目nacos进行引入&#xff0c;sentiel需自行按照部署 1.springboot包要是2.2.5或以上 <dubbo.version>2.7.7</dubbo.version><spring-boot.version>2.2.5.RELEASE</spring-boot.version><chainwork-boot.version>1.0.5-SNAPSH…

.Net C#检验科LIS系统成品源码 ,LIS 系统与 HIS 系统的连接方式详解

目录 系统定义与功能 应用特点 检验科 LIS 系统与 HIS 系统的连接方式 1、接口设计与数据交换 2、网络架构 3、数据格式与标准化 4、信息共享与协同工作 5、数据安全与隐私保护 6、技术支持与维护 LIS系统成品源码 总结 系统定义与功能 LIS系统&#xff0c;全称为实验…

python tkinter 简介

ttk模块是tkinter模块中非常重要的模块&#xff0c;相当于升级版的tkinter模块。 ttk模块包含18个组件&#xff0c;其中12个组件在tkinter模块中已经存在。这12个模块分别为Button&#xff08;按钮&#xff09;​、Checkbutton&#xff08;复选框&#xff09;​、Entry&#x…

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 - 通过aclnn调用的方式调用AddCustom算子

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 通过aclnn调用的方式调用 - AddCustom算子 - 单算子API执行(aclnn) 多种算子调用方式 *开发时间使用场景调用方式运行硬件基于Kernel直调工程&#xff08;快速&#xff09;少单算子调用&#xff0c;快速验证算法逻辑IC…