1-8 图像腐蚀 opencv树莓派4B 入门系列笔记

2024-09-07 20:44

本文主要是介绍1-8 图像腐蚀 opencv树莓派4B 入门系列笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、提前准备

二、代码详解

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

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

eroded_image=cv2.erode(binary_image,kernel,iterations=1)

eroded_image2=cv2.erode(image2,kernel,iterations=1)

三、运行现象

四、完整代码

五、完整代码贴出


一、提前准备

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

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

        3、保存一张图片

二、代码详解

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

# coding: utf-8 
# 图像腐蚀的目的:1、去除图像中微小物体 2、分离较近的俩个物体 3、减少一部分信息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((2,2),np.uint8)#图像二值化处理:使用127作为阈值  
_, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)  #进行图像腐蚀操作(对二值图进行腐蚀),iterations表示腐蚀次数
eroded_image=cv2.erode(binary_image,kernel,iterations=1)
eroded_image2=cv2.erode(image2,kernel,iterations=1)

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

  • 功能: 定义腐蚀操作的结构元素。
  • 参数:
    • (2,2): 定义结构元素的大小,这里为2x2的矩阵。
    • np.uint8: 数据类型,表示无符号8位整数。

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

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

eroded_image=cv2.erode(binary_image,kernel,iterations=1)

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

eroded_image2=cv2.erode(image2,kernel,iterations=1)

  • 功能: 对原始格式的图像进行腐蚀操作。
  • 参数:
    • image2: 输入的图像。
    • kernel: 进行腐蚀操作的结构元素。
    • iterations=1: 腐蚀操作的次数。

3、图像显示

while True:#显示原始图\二值图\腐蚀后的图cv2.imshow('Original image',image)cv2.imshow('Eroded image',eroded_image)cv2.imshow('Binary Image', binary_image)cv2.imshow('Original image2',image2)cv2.imshow('Eroded image2',eroded_image2)#等待按下‘q’退出key=cv2.waitKey(1)if key&0XFF==ord('q'):break
#释放所有资源
cv2.destroyAllWindows()

三、运行现象

增加腐蚀次数效果会更明显

 图像腐蚀的目的:1、去除图像中微小物体 2、分离较近的俩个物体 3、减少一部分信息

四、完整代码

# coding: utf-8 
# 图像腐蚀的目的:1、去除图像中微小物体 2、分离较近的俩个物体 3、减少一部分信息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((2,2),np.uint8)#图像二值化处理:使用127作为阈值  
_, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)  #进行图像腐蚀操作(对二值图进行腐蚀),iterations表示腐蚀次数
eroded_image=cv2.erode(binary_image,kernel,iterations=1)
eroded_image2=cv2.erode(image2,kernel,iterations=1)while True:#显示原始图\二值图\腐蚀后的图cv2.imshow('Original image',image)cv2.imshow('Eroded image',eroded_image)cv2.imshow('Binary Image', binary_image)cv2.imshow('Original image2',image2)cv2.imshow('Eroded image2',eroded_image2)#等待按下‘q’退出key=cv2.waitKey(1)if key&0XFF==ord('q'):break
#释放所有资源
cv2.destroyAllWindows()

五、完整代码贴出

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

持续更新中……

这篇关于1-8 图像腐蚀 opencv树莓派4B 入门系列笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146110

相关文章

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元