当前位置: 首页 > article >正文

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

目录

一、提前准备

二、代码详解

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.kler.cn/news/294705.html

相关文章:

  • 关键字volatile有什么含意?
  • Java线程池和Executor框架-面试与分析
  • Wimdows使用Appium IOS自动化
  • 行为型设计模式-责任链(chain of responsibility)模式-python实现
  • 第十六篇:走入计算机网络的传输层--传输层概述
  • 【Qt线程】—— Qt线程详解
  • 2024年水利水电安全员考试题库及答案
  • Linux C 内核编程 /proc 编程例子
  • 【代码随想录训练营第42期 续Day52打卡 - 图论Part3 - 卡码网 103. 水流问题 104. 建造最大岛屿
  • 手游后端架构中,用命令模式解决什么问题
  • How can I load the openai api configuration through js in html?
  • 云计算实训41——部署project_exam_system项目(续)
  • 关于Qt在子线程中使用通讯时发生无法接收数据的情况
  • Docker配置Redis持久化
  • 如何保护服务器免受恶意软件攻击?
  • C++学习笔记(11)
  • 【网络安全】如何预防xss
  • 基于EPS32C3电脑远程开机模块设计
  • 飞思相机存储卡格式化数据如何恢复?提供全面指南
  • 风格控制水平创新高!南理工InstantX小红书发布CSGO:简单高效的端到端风格迁移框架
  • 【Nacos】负载均衡
  • 应用层简单实现udp / tcp网络通信
  • 「大数据分析」图形可视化,如何选择大数据可视化图形?
  • Qt: 详细理解delete与deleteLater (避免访问悬空指针导致程序异常终止)
  • JAVA并发编程JUC包之CAS原理
  • 概率学 笔记一 - 概率 - 随机变量 - 期望 - 方差 - 标准差(也不知道会不会有二)
  • 【AcWing】853. 有边数限制的最短路(bellman-ford贝尔曼福特算法)
  • 【HTML】script标签asyncdefer
  • 第十五届蓝桥杯青少组省赛成绩查询及国赛考试安排
  • 如何实现加密功能