【发布时间】:2021-05-23 15:22:09
【问题描述】:
这是我的代码,我正在尝试使用 sobel 方法进行边缘检测。但是我既没有得到错误也没有得到图像。如果我有错误,你能解释它在哪里吗?
import cv2
import numpy as np
img=cv2.imread("lena.jpg")
img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
m,n=img.shape
kernelx=np.array([[-1, -2, -1], [0, 0, 0], [1, 2, 1]])
kernely=np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]])
gx=np.zeros((m,n), dtype=np.int32)
gy=np.zeros((m,n), dtype=np.int32)
for x in range(1,m-1):
for y in range(1,n-1):
for a in range(3):
for b in range(3):
xn = x + a - 1
yn = y + b - 1
gx=gx+(kernelx[a][b]*img[xn][yn])
gy=gy+(kernely[a][b]*img[xn][yn])
final_image=np.sqrt(pow(gx,2.0)+pow(gy,2.0))
cv2.imshow("a",final_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
【问题讨论】:
-
你是否可以使用
imshow编写一个显示任何图像的程序(无需尝试在顶部进行边缘检测)? -
我不明白
-
你能写一个加载图像并显示它的工作程序吗?
-
是的,我可以使用 cv2
-
img=cv2.imread("lena.jpg") cv2.imshow("img",img)