python - Sobel过滤错误结果
问题描述
我正在用 python 编写一个 Sobel 过滤器,但结果似乎与其他过滤器不同,我的代码有什么错误吗?还是我误解了sobol过滤器
这是我的结果
import cv2
import numpy as np
img = cv2.imread('Lenna.png',0)
cv2.imshow('image',img)
def convolution(img,rowMask,columnsMask,maskSize,r):
outPut = np.zeros((len(img),len(img[0])))
img = np.pad(img,r,"constant")
for y in range(0,len(outPut)):
for x in range(0,len(outPut[0])):
outPut[y][x] = convolutionRow(img,y+r, x+r, maskSize,rowMask,r)
for y in range(0,len(outPut)):
for x in range(0,len(outPut[0])):
outPut[y][x] = convolutionColumns(img,y+r, x+r, maskSize,columnsMask,r)
return outPut
def convolutionRow(img,y,x,maskSize,rowMask,r):
sum = 0
for i in range(0,maskSize):
sum += img[y][x-r+i]*rowMask[i]
return sum
def convolutionColumns(img,y,x,maskSize,columnsMask,r):
sum = 0
for i in range(0,maskSize):
sum += img[y-r+i][x]*columnsMask[i]
return sum
SobelXRowMask=np.array([0.125,0.25,0.125])
SobelXColumnsMask=np.array([-0.125,0,0.125])
SobelX = convolution(img, SobelXRowMask, SobelXColumnsMask,3,1)
cv2.imshow('SobelXOutPut',SobelX)
SobelYRowMask=np.array([-0.125,0,0.125])
SobelYColumnsMask=np.array([0.125,0.25,0.125])
SobelY = convolution(img, SobelYRowMask, SobelYColumnsMask,3,1)
cv2.imshow('SobelYOutPut',SobelY)
cv2.waitKey(0)
cv2.destroyAllWindows()
解决方案
推荐阅读
- angular - 如何在不重定向到另一个组件/页面的情况下以角度弹出对话框?
- java - java中的类型严格行为表现出意外
- angular - 以角度 7 显示当前页面或屏幕的导航路径位置
- python - 用于 Python3 的 OSX HIDAPI 安装(pip3 故障排除):High-Sierra
- javascript - 如何将 1 个日期放入 2 个输入字段?
- java - 编写整个字符串的Java方法
- javascript - 向网页添加计时器
- regex - 使用带有 ARRAYFORMULA 的 REGEXEXTRACT 提取列值
- r - 带有Access DB的R中的ODBC是否存在语言问题?
- java - 如何将 2 excel 中的数据与 java 进行比较