目录
一、提前准备
二、代码详解
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文库
持续更新中……