gpt4 book ai didi

python - 我得到高斯图像的黑色拉普拉斯图像

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:32 24 4
gpt4 key购买 nike

import cv2
import math

高斯函数

def gaussianblur(img,sigma):
if(sigma<0):
print("SIGMA SHOULD BE POSITIVE")
return;

计算一维核,g(x)=(1/squareroot(2*sigma*sigma*3.142)) * e^(-(x*x)/(2*sigma*sigma))

      deno=(((math.sqrt(2*3.142*sigma*sigma))))
k=[0,0,0,0,0]
sum=0




for x in range(-2,3):
numo=(math.exp(-((x*x)/(2*(sigma*sigma)))))
k[x+2]=(numo/deno)
sum=sum+k[x+2]




for x in range(0,5):
k[x]=(k[x]/sum)

逐行应用卷积

      for i in range(0,img.shape[0]):
for j in range(2,img.shape[1]-2):
img[i,j]=abs((img[i,j-2]*k[0])+(img[i,j-1]*k[1])+(img[i,j]*k[2])+(img[i,j+1]*k[3])+(img[i,j+2]*k[4]))



return img; `#end of gaussian blur function`

主函数启动

读取图像

dog=img = cv2.imread('art.jpg',cv2.IMREAD_GRAYSCALE)

应用第一次模糊

temp=img=gaussianblur(img,1)

#display image
cv2.imshow('blur1',img)

应用第二次模糊

temp=gaussianblur(temp,1)

cv2.imshow('blur2',temp)

高斯的差异

for i in range(0,img.shape[0]):
for j in range(0,img.shape[1]):
dog[i,j]=abs((img[i,j])-(temp[i,j]))

cv2.imshow('DoG',dog)

output

blur1

blur2

DoG

最佳答案

您将在此处覆盖您的输入:

for i in range(0,img.shape[0]):
for j in range(2,img.shape[1]-2):
img[i,j]=abs((img[i,j-2]*k[0])+(img[i,j-1]*k[1])+(img[i,j]*k[2])+(img[i,j+1]*k[3])+(img[i,j+2]*k[4]))

尝试将结果写入新图像。

我不知道OpenCV python接口(interface)是如何工作的,temp=img是否会导致tempimg共享数据(如,当你改变一个时,你也会改变另一个)?确保您有两个不同的数据 block !

关于python - 我得到高斯图像的黑色拉普拉斯图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47049619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com