数字图像处理(一)图像分割+python
·
设计3*3的模板,对一副测试图像进行正负45度的边缘检测。
sobel:
import cv2
import matplotlib.pyplot as plt
# 读图
img = cv2.imread('lena.jpg')
img_RGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 灰度化
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Sobel
x = cv2.Sobel(grayImage, cv2.CV_16S, 1, 0) # 对x求一阶导
y = cv2.Sobel(grayImage, cv2.CV_16S, 0, 1) # 对y求一阶导
absX = cv2.convertScaleAbs(x) # 绝对值,并将图像转换为8位图显示
absY = cv2.convertScaleAbs(y)
Sobel = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 显示
plt.subplot(121), plt.imshow(img_RGB), plt.title('原始图像'), plt.axis('off') # 坐标轴关闭
plt.subplot(122), plt.imshow(Sobel, cmap=plt.cm.gray), plt.title('Sobel算子'), plt.axis('off')
plt.show()
分割:
import matplotlib.pyplot as plt
import cv2
import numpy as np
# 读
img = cv2.imread("lena.jpg")
fil1 = np.array([[2, 2, 0],
[2, 0, -2],
[0, -2, 2]])
fil2 = np.array([[0, 1, 0],
[-1, 0, 1],
[0, -1, 0]])
res1 = cv2.filter2D(img, -1, fil1)
res2 = cv2.filter2D(img, -1, fil2)
plt.figure()
plt.subplot(1, 2, 1) # 用于直接指定划分方式和位置进行绘图
plt.imshow(res1)
plt.subplot(1, 2, 2)
plt.imshow(res2)
plt.show()
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)