在終端輸入:
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
defgaussianlowfilter(image,d):
f =np.fft.fft2(image)
fshift =np.fft.fftshift(f)
s1 =np.log( np.abs( fshift ) )
defmake_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]):
defcal_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
defdo_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()
ifnot
args.input:
print( '
\nplease provide an input file.\n
'.format( 50 * '-'
) ) parser.print_help()
quit()
ifnot
args.distance:
args.distance=1do_it(args.input,args.distance)
用python寫了乙個文字版本的掃雷遊戲。
很簡單,注釋很詳細。附上。coding utf 8 import sys import random 地圖標記 map map blank 0 地圖空白 map mine 1 有雷存在 map used 2 已經排除 錯誤碼 error error ok 5 結果ok error fail 6 結果...
指令碼的故事(2)
本頁內容 知識就是力量 最後的思考 知識就是力量 好了,好了 站在走廊上往下看,看那些手中掌握實權的傢伙們。我們有時很難理解,他們的權利到底和他們所掌握的知識有什麼聯絡。雖然事實如此,但是盡量多地掌握你所能得到的知識和資訊畢竟不是一件壞事,這對於計算機安全這個問題尤其正確。你對於你的計算機以及它的設...
作業2的回答
using system using system.collections.generic using system.text namespace findthenumber for int64 i 1 i int64.maxvalue i else if hit 2 else break if h...