カラー画像に対して 3 チャネル Canny エッジ検出を実行する方法
この記事では主に、カラー画像に対して 3 チャネルの Canny エッジ検出を実行する方法を記録します。
目次
0. 主な手順
カラー画像の 3 チャンネルキャニーエッジ検出は、主に次の 2 つのステップで構成されます:
(1) カラー画像を 3 チャンネルの画像に分離する、
(2) 3 チャンネルの画像に対してキャニーエッジ検出を実行する、
(3)エッジ検出結果を示します。
1. カラー画像を3チャンネル画像に分離する
カラー イメージ Airplane を、Airplane_B.jpg、Airplane_G.jpg、Airplane_R.jpg の 3 つのチャネル イメージに分割します。具体的なコードは次のとおりです。
# coding :UTF-8
# 文件功能: 代码实现彩色图像三通道分别提取的功能
# 开发人员: XXX
# 开发时间: 2022/6/11 6:20 下午
# 文件名称: Three_Channel_Extraction_of_Color_Images.py
# 开发工具: PyCharm
# 当采用CV2时,读取到的彩色图像的三通道顺序为:BGR
# 本程序是实现将一个彩色图像分离出3个通道的图像,然后分别保存为3张图像,并用Orinal_Canny_Edge_Detection.py实现边缘检测。
import cv2
import numpy as np
img = cv2.imread('image/Airplane.tiff') # 读取图像
# 显示彩色图像
cv2.imshow("img", img)
cv2.waitKey(0)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow("gray", gray)
cv2.waitKey(0)
# 得到图像的大小
rows, cols, _ = img.shape
print(rows, cols)
# 初始化一个大小一样的图像,元素均初始化为0
created = np.zeros((rows, cols))
# for in 语句,遍历数组,但不能修改数组
for i in img:
for j in i:
#print(j)
pass
# 给数组赋值
for i in range(0, rows):
for j in range(0, cols):
created[i, j] = img[i, j, 2] # 第3个参数,可以是0,1,2,分别表示B,G,R三个通道
print(created.shape) # 输出创建图像的大小
# 必须加上下面这一条语句,否则无法正确显示图像
created = created.astype(np.uint8) # 转换数据类型,才能正确的显示图像
cv2.imshow('created', created)
cv2.imwrite('image/Airplane_R.jpg', created)
cv2.waitKey(0)
2. Canny エッジ検出を実現するためのグレースケール画像
3 チャンネルの画像に対して Canny エッジ検出が行われます。具体的なコードは次のとおりです。
# coding :UTF-8
# 文件功能: 代码实现最简单的Canny edge detection边缘检测的功能
# 开发人员: XXX
# 开发时间: 2022/6/11 5:18 下午
# 文件名称: Orinal_Canny_Edge_Detection.py
# 开发工具: PyCharm
import cv2
import numpy as np
from PIL import Image
lower = 30 # 最小阈值
upper = 70 # 最大阈值
img_path = 'image/Airplane_R.jpg' # 指定测试图像路径
gray = cv2.imread(img_path, 0) # 读取灰度图像
edge = cv2.Canny(gray, lower, upper) # Canny 图像边缘检测
contrast = np.concatenate([edge, gray], 1) # 图像拼接
Image.fromarray(contrast).save('image/Airplane_R_edge.png', format='PNG') # 保存图像
3. エッジ検出結果の表示
(1) オリジナルカラー画像
(2) 3チャンネル分割画像
1、Airplane_B.jpg
2、Airplane_G.jpg
3、Airplane_R.jpg
(3) 3チャンネルエッジ検出結果
1.Airplane_B_edge.jpg
2、飛行機_G_edge.jpg
3、飛行機_R_edge.jpg