import numpy as np from matplotlib import pyplot as plt import cv2 as cv def show(img): if img.ndim == 2: plt.imshow(img,cmap='gray',vmin=0,vmax=255) else: plt.imshow(cv.cvtColor(img,cv.COLOR_BGR2RGB)) plt.show() if __name__ == '__main__': a = np.random.randint(0,256,(2,4),dtype=np.uint8) #二位灰度图 # show(a) b = np.random.randint(0,256,(2,4,3),dtype=np.uint8) #彩图 # print(np.uint8([-1,0,255,300])) #通道分离与合并 img = cv.imread('image/apple.jpg') b,g,r = cv.split(img) #分离 img2 = cv.merge([b,g,r]) #合并 #彩图转灰度图 gray1 = 0.114*b + 0.587*g + 0.299*r #权值可变 print(gray1) gray2 = gray1.astype(np.uint8) #将浮点数转为整数 gray3 = np.uint8(gray1) #将浮点数转为整数 #彩图转为灰度图 gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) #二值化图像(灰度转二值) thresh = 125 print(gray1 > thresh) #结果为True和False的二维矩阵 gray1[gray1 > thresh] = 255 gray1[gray1 <= thresh] = 0 # show(gray1) # 二值化图像(灰度转二值) ignore,gray4 = cv.threshold(gray2,125,255,cv.THRESH_BINARY) #有两个返回值,灰度图为int8型,将大于125的设置成255,小于变0 # show(gray4)
标签:img,彩图,uint8,灰度,np,二值,gray1,cv From: https://www.cnblogs.com/yj12/p/17047849.html