imshow a gray image and a binary image python

Viewed 27732

I have a grayscale image and a binary image, and I want to plot them side by side using hstack. It looks like there is kind of adjustment that been made yielding to darken the binary. Anybody faced this problem?

enter image description here

Here is my code

O = (self.img >= t) * 1
I = img
both = np.hstack((I, O))
imshow(both, cmap='gray')
show() 
2 Answers

This is to demonstrate a somewhat different from your case which I don't know of its data. I suspect that all the values in your array 'O' are zero, thus, the plot came out as a black pane.

import numpy as np
import matplotlib.pyplot as plt

fig=plt.figure(figsize=(8, 4))

# make up some data for demo purposes
raw = np.random.randint(10, size=(6,6))
# apply some logic operatioin to the data
O = (raw >= 5) * 1   # get either 0 or 1 in the array
I = np.random.randint(10, size=(6,6))  # get 0-9 in the array

# plot each image ...
# ... side by side
fig.add_subplot(1, 2, 1)   # subplot one
plt.imshow(I, cmap=plt.cm.gray)

fig.add_subplot(1, 2, 2)   # subplot two
# my data is OK to use gray colormap (0:black, 1:white)
plt.imshow(O, cmap=plt.cm.gray)  # use appropriate colormap here
plt.show()

The resulting image:

enter image description here

The code from the question works fine.

import matplotlib.pyplot as plt
import numpy as np

img = plt.imread("https://i.stack.imgur.com/oos05.png")[88:456,82:326]
t = 0.5

O = (img >= t) * 1
I = img
both = np.hstack((I, O))
plt.imshow(both, cmap='gray')
plt.show() 

enter image description here

Related