Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我得到了瓜西的黑色拉普拉斯图像_Python_Image Processing_Filtering_Laplacianofgaussian - Fatal编程技术网

Python 我得到了瓜西的黑色拉普拉斯图像

Python 我得到了瓜西的黑色拉普拉斯图像,python,image-processing,filtering,laplacianofgaussian,Python,Image Processing,Filtering,Laplacianofgaussian,高斯函数 import cv2 import math 逐行应用卷积 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]

高斯函数

import cv2
import math
逐行应用卷积

      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)
尝试将结果写入新图像


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

您可以参考,实际上,我想实现高斯模糊,而不使用内置函数。如果值越来越小,请在显示图像之前尝试调用
normalize()
。temp=np.zero((img.shape[0],img.shape[1],1),np.uint8)以创建与原始图像尺寸相同的新空图像。我得到了结果,这很有帮助,谢谢你,克里斯·卢恩戈
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)
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]))