嗨,伙計們,問候
我正在使用我在網上找到的這段代碼,在影像上應用維納過濾器,代碼:
from scipy.signal.signaltools import deconvolve
from skimage import color, data, restoration
img = color.rgb2gray(img)
from scipy.signal import convolve2d
psf = np.ones((5, 5)) / 25
img = convolve2d(img, psf, 'same')
img = 0.1 * img.std() * np.random.standard_normal(img.shape)
deconvolved_img = restoration.wiener(img, psf, 1100)
f, (plot1, plot2) = plt.subplots(1, 2)
plot1.imshow(img)
plot2.imshow(deconvolved_img)
plt.show()
cv2.imwrite("wiener result 2.jpeg",deconvolved_img)
問題是當我使用 Matplotlib 繪制結果時,我得到了這個:

但是當我輸入cv2.imwrite("wiener result 2.jpeg",deconvolved_img)保存影像時,我得到了這個:

為什么我保存時會得到黑色影像?
uj5u.com熱心網友回復:
有兩種方法可以將影像保存為檔案:
方法一:使用matplotlib
由于您使用matplotlib庫來顯示影像plt.show(),因此您也可以使用相同的庫來保存您的繪圖plt.savefig()
plot1.imshow(img)
plot2.imshow(deconvolved_img)
plt.savefig('path_to_save) # mention the path you want to save the plots
plt.show()
方法二:使用OpenCV
您還可以使用 OpenCV 保存檔案。
但在保存影像之前,需要進行轉換。image 變數deconvolved_img 是float資料型別,取值范圍在 [0 - 1] 之間。因此,當您保存此類影像時,它們會被視為黑色影像。
在 OpenCV 中,您可以將影像轉換為資料型別,并使用以下函式int在預期的 [0 - 255] 之間縮放像素強度:cv2.normalize()
result = cv2.normalize(deconvolved_img, dst=None, alpha=0, beta=255,norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
cv2.imwrite('path_to_save', result) # mention the path you want to save the result
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/468225.html
標籤:Python opencv 图像处理 筛选 scikit 图像
上一篇:Python3'cv2.resizeWindow('img',500,500)'錯誤
下一篇:如何從面部地標中洗掉背景和視頻
