hi folks, greetings
am using this code that I found on the web, to apply a wiener filter on an image, the code :
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)
the issue is when I plot the result using Matplotlib I get this :
but when I type
cv2.imwrite("wiener result 2.jpeg",deconvolved_img) to save the image, I get this :
why do I get a black image when I save it ??
There are two ways to save your images as a file:
Method 1: Using
Since you are using
matplotlib library to show the image
plt.show(), you can use the same library to save your plots as well using
plot1.imshow(img) plot2.imshow(deconvolved_img) plt.savefig('path_to_save) # mention the path you want to save the plots plt.show()
Method 2: Using
You can also save your file using OpenCV.
But prior to saving your image there is a conversion required. The image variable
deconvolved_img is of
float data type, with values ranging between [0 – 1]. Hence when you save such images they are perceived as a black image.
In OpenCV you can convert your image to
int data type and scaling the pixel intensities between the expected [0 – 255] using
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
Answered By – Jeru Luke
Answer Checked By – Cary Denson (AngularFixing Admin)