zoukankan      html  css  js  c++  java
  • 电镜作业2的脚本版本

    在终端输入:

    python 高斯低通滤波.py -i zhn.jpg -d 1.6667

    1。正常不需要前面写个python,但是cv2的库需要我们自己去导入,要给他一个环境变量的指明

    2. 文件要和脚本放到同一文件夹或给它正确的路径

    脚本代码如下:

    #Author:zhanghaonan
    import cv2 as cv
    import numpy as np
    from matplotlib import pyplot as plt
    import matplotlib.image as mpimg
    
    def GaussianLowFilter(image,d):
    
        f = np.fft.fft2(image)
        fshift = np.fft.fftshift(f)
        s1 = np.log( np.abs( fshift ) )
        def make_transform_matrix(d):
            transfor_matrix = np.zeros(image.shape)
            center_point = tuple(map(lambda x:(x-1)/2,s1.shape))
            for i in range(transfor_matrix.shape[0]):
                for j in range(transfor_matrix.shape[1]):
                    def cal_distance(pa,pb):
                        from math import sqrt
                        dis = sqrt((pa[0]-pb[0])**2+(pa[1]-pb[1])**2)
                        return dis
                    dis = cal_distance(center_point,(i,j))
                    transfor_matrix[i,j] = np.exp(-(dis**2)/(2*(d**2)))
            return transfor_matrix
        d_matrix = make_transform_matrix(d)
        new_img = np.abs(np.fft.ifft2(np.fft.ifftshift(fshift*d_matrix)))
        return new_img
    def do_it(filename,distance):
        img= cv.imread(filename,0)#把你文件名输入进来,尾缀必须有.jpg或.png
        img_d1=GaussianLowFilter(img,distance)
        plt.subplot(111)
        plt.axis("off")
        plt.imshow(img_d1,cmap="gray")
        plt.title('Gaussianlow')
        plt.show()
    if __name__ == '__main__':
    
        import argparse
    
        parser = argparse.ArgumentParser(
            description='高斯滤波' ,
            formatter_class=argparse.RawTextHelpFormatter
        )
    
        parser.add_argument( '-i' , '--input' , help='输入你的照片路径' )
        parser.add_argument( '-d' , '--distance' , help='低通滤波大小(default = 1)',type=float )
        parser.add_argument( '-v' , '--version' , action='version' , version='v. 1.0' )
        args = parser.parse_args()
        if not args.input:
            print( '{0}
    Please provide an input file.
    {0}'.format( 50 * '-' ) )
            parser.print_help()
            quit()
        if not args.distance:
            args.distance=1
        do_it(args.input,args.distance)
  • 相关阅读:
    Protocol https not supported or disabled in libcurl
    初学require.js
    HTML中的IE条件注释
    前端,我为什么不要你
    敲点JavaScript代码
    小白科普之JavaScript的函数
    小白科普之JavaScript的BOM模型
    小白科普之JavaScript的JSON
    小白科普之JavaScript的数组
    document.documentElement和document.body的区别
  • 原文地址:https://www.cnblogs.com/klausage/p/11562564.html
Copyright © 2011-2022 走看看