Opencv 《图片特效:01 灰度处理》
Opencv 《图片特效:01 灰度处理》
介绍4种实现方式:
方法1
1 # import cv2 2 3 # 4 # img0 = cv2.imread('test.jpg',0) # 0代表灰色,1代表彩色 5 # img1 = cv2.imread('test.jpg',1) # 0代表灰色,1代表彩色 6 # print(img0.shape) 7 # print(img1.shape) 8 # cv2.imshow('image0',img0) 9 # cv2.imshow('image1',img1) 10 # cv2.waitKey(0)
方法2
1 #方法2 cvtColor 2 # import cv2 3 # 4 # img = cv2.imread('test.jpg',1) 5 # dst = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图片 BGR ->GRAY 6 # cv2.imshow('image',dst) 7 # cv2.waitKey(0)
方法3
1 #方法3 使用 GRAY = (R + G + B)/3 完成灰度处理 2 # import cv2 3 # import numpy as np 4 # 5 # img = cv2.imread('test.jpg',1) 6 # imgInfo = img.shape 7 # height = imgInfo[0] 8 # width = imgInfo[1] 9 # dst = np.zeros((height,width,3),np.uint8) 10 # for i in range(height): 11 # for j in range(width): 12 # (b,g,r) = img[i,j] 13 # gray = (int(b) + int(g) +int(r))/3 14 # dst[i,j] = np.uint8(gray) 15 # cv2.imshow('image',dst) 16 # cv2.waitKey(0)
方法4
1 #方法4 心理学灰度计算公式 使用 GRAY = R * 0.299 + G * 0.587 + B * 0.114 完成灰度处理 2 # import cv2 3 # import numpy as np 4 # 5 # img = cv2.imread('test.jpg',1) 6 # imgInfo = img.shape 7 # height = imgInfo[0] 8 # width = imgInfo[1] 9 # dst = np.zeros((height,width,3),np.uint8) 10 # for i in range(height): 11 # for j in range(width): 12 # (b,g,r) = img[i,j] 13 # gray = int(b) * 0.144 + int(g) * 0.587 +int(r) * 0.299 14 # dst[i,j] = np.uint8(gray) 15 # 16 # cv2.imshow('image',dst) 17 # cv2.waitKey(0)
下面是算法优化部分
算法优化
1 1 # 算法优化 2 2 # 定点》浮点 + - 》* / 3 3 4 4 import cv2 5 5 import numpy as np 6 6 7 7 img = cv2.imread('test.jpg',1) 8 8 imgInfo = img.shape 9 9 height = imgInfo[0] 10 10 width = imgInfo[1] 11 11 dst = np.zeros((height,width,3),np.uint8) 12 12 for i in range(height): 13 13 for j in range(width): 14 14 (b,g,r) = img[i,j] 15 15 b=int(b) 16 16 g=int(b) 17 17 r=int(r) 18 18 # gray = (b*1+g*2+r*1)/4 19 19 gray = (b + (g <<1) + r ) >>2 # *2 左移一位 /4 右移两位 20 20 dst[i,j] = np.uint8(gray) 21 21 22 22 cv2.imshow('image',dst) 23 23 cv2.waitKey(0)

浙公网安备 33010602011771号