Python OpenCV 实现形状不一的梯度图像相加
这里提供一种使用Python和OpenCV库实现的形状不一的梯度相加代码:
import cv2
import numpy as np
# 读取第一张图片
img1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
h1, w1 = img1.shape
# 读取第二张图片
img2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)
h2, w2 = img2.shape
# 将两张图片的大小调整为相同
if h1 != h2 or w1 != w2:
h = max(h1, h2)
w = max(w1, w2)
img1 = cv2.resize(img1, (w, h))
img2 = cv2.resize(img2, (w, h))
# 计算第一张图片的梯度
sobelx1 = cv2.Sobel(img1, cv2.CV_64F, 1, 0, ksize=3)
sobely1 = cv2.Sobel(img1, cv2.CV_64F, 0, 1, ksize=3)
grad1 = cv2.addWeighted(sobelx1, 0.5, sobely1, 0.5, 0)
# 计算第二张图片的梯度
sobelx2 = cv2.Sobel(img2, cv2.CV_64F, 1, 0, ksize=3)
sobely2 = cv2.Sobel(img2, cv2.CV_64F, 0, 1, ksize=3)
grad2 = cv2.addWeighted(sobelx2, 0.5, sobely2, 0.5, 0)
# 将两张图片的梯度相加
grad = cv2.addWeighted(grad1, 0.5, grad2, 0.5, 0)
# 显示结果
cv2.imshow('Grad', grad)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个代码中,我们首先读取了两张图片,并将它们的大小调整为相同。然后,分别计算了两张图片的梯度,并使用 cv2.addWeighted() 函数将它们相加,得到最终的梯度图像。最后,我们将结果显示出来。需要注意的是,在计算梯度时,我们使用了Sobel算子,这是一种常用的图像边缘检测算法。
原文地址: https://www.cveoy.top/t/topic/nw10 著作权归作者所有。请勿转载和采集!