图像实现灰度直方图,其中cv2.imread()是读取到uint8的数据
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('/home/yc/Pictures/cat.jpg',0)
plt.hist(img.ravel(),256,[0,256]);
plt.show()
def int_photo(self):
img = self.img
# 需要归一化 因为cv2.imread 读出来的图像是uint8,要显示float32的图像需要进行归一化
img = img / 255
img = np.array(img, dtype=np.float32)
img[..., 0] = img[..., 0] * 50 # r
img[..., 1] = img[..., 1] * 80 # g
img[..., 2] = img[..., 2] * 58 # b
im = np.sum(img, axis=2)
img[..., :] = img[..., :] / 100.0
plt.imshow(img, cmap='gray')
plt.show()
然后是对图像进行rgb设置,倍乘等,需要注意的是使用float32时,需要进行归一化