In [1]:
import cv2
import numpy as np

In [2]:
im = cv2.imread('data/src/lena.jpg')
print(im.shape)


(225, 400, 3)

In [3]:
print(im.dtype)


uint8

In [4]:
im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
print(im_gray.shape)


(225, 400)

In [5]:
print(im_gray.dtype)


uint8

In [6]:
cv2.imwrite('data/dst/opencv_gray_cvtcolr.jpg', im_gray)


Out[6]:
True

In [7]:
im_gray_read = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE)
print(im_gray_read.shape)


(225, 400)

In [8]:
print(im_gray_read.dtype)


uint8

In [9]:
cv2.imwrite('data/dst/opencv_gray_imread.jpg', im_gray_read)


Out[9]:
True

In [10]:
im_gray_diff = im_gray.astype(int) - im_gray_read.astype(int)

In [11]:
print(im_gray_diff.max())


10

In [12]:
print(im_gray_diff.min())


-10

In [13]:
im_gray_calc = 0.299 * im[:, :, 2] + 0.587 * im[:, :, 1] + 0.114 * im[:, :, 0]
print(im_gray_calc.shape)


(225, 400)

In [14]:
print(im_gray_calc.dtype)


float64

In [15]:
cv2.imwrite('data/dst/numpy_gray_calc.jpg', im_gray_calc)


Out[15]:
True

In [16]:
im_gray_diff = im_gray_calc - im_gray

In [17]:
print(im_gray_diff.max())


0.4969999999999857

In [18]:
print(im_gray_diff.min())


-0.4980000000000473

In [19]:
a = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])

In [20]:
print(a.round())


[0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1.]

In [21]:
print(a.astype('uint8'))


[0 0 0 0 0 0 0 0 0 0 1]

In [22]:
print(np.array_equal(im_gray_calc.round(), im_gray))


True

In [23]:
print(np.array_equal(im_gray_calc.astype('uint8'), im_gray))


False