为什么 cv2.write 保存黑色图像?
Why cv2.write saves black images?
大家好,大家好
我正在使用我在网上找到的这段代码,对图像应用维纳过滤器,代码:
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)
保存图像时,我得到了这个:
为什么我保存的时候图片是黑色的??
有两种方法可以将图像保存为文件:
方法一:使用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 保存文件。
但在保存图像之前需要进行转换。图像变量 deconvolved_img
是 float
数据类型,取值范围在 [0 - 1] 之间。因此,当您保存此类图像时,它们会被视为黑色图像。
在 OpenCV 中,您可以将图像转换为 int
数据类型,并使用 cv2.normalize()
函数缩放预期 [0 - 255] 之间的像素强度:
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
大家好,大家好
我正在使用我在网上找到的这段代码,对图像应用维纳过滤器,代码:
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)
保存图像时,我得到了这个:
为什么我保存的时候图片是黑色的??
有两种方法可以将图像保存为文件:
方法一:使用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 保存文件。
但在保存图像之前需要进行转换。图像变量 deconvolved_img
是 float
数据类型,取值范围在 [0 - 1] 之间。因此,当您保存此类图像时,它们会被视为黑色图像。
在 OpenCV 中,您可以将图像转换为 int
数据类型,并使用 cv2.normalize()
函数缩放预期 [0 - 255] 之间的像素强度:
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