目录
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()
五、完整工程贴出
持续更新中……