opencv几种简单的转化

1. 通道交换

读取图像,然后将BGR通道(这是opencv默认打开图像的方式)替换成RGB 通道。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2

img = cv2.imread("../imori.jpg")
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()

# BGR -> RGB
img[:, :, 0] = r
img[:, :, 1] = g
img[:, :, 2] = b

# save result
cv2.imwrite("answer_1.jpg", img)
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
输入 输出
image image

2. 灰度化(Grayscale)

灰度是一种图像亮度的表示方法,通过下式计算:

Y = 0.2126 R + 0.7152 G + 0.0722 B

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import cv2
import numpy as np

img = cv2.imread("../imori.jpg").astype(np.float)
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]

out = 0.2126 * r + 0.7152 * g + 0.0722 * b
out = out.astype(np.uint8)

cv2.imwrite("answer_2.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
输入 输出
image image

先写到这里,后续看到有意思的再继续补充。