参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。
代码编写:Jupyter Notebook。
1. *** 作灰度图像
# 计算机将灰度处理为256级(0-255),0表示黑色,255表示白色,用一个字节来存储一个像素的值;
import cv2 as cv
import numpy as np
img = np.zeros((480, 680), dtype = np.uint8)
n = 0
while True:
cv.imshow("GrayImg", img)
n += 20
img[:, :] = n # 更改图像灰度值
print(img[1,1]) # 输出其中一个像素值
key = cv.waitKey(1000) & 0xFF
if (key == 27) or (key == ord("q")): # 按ESC或q键退出循环
break
cv.destroyAllWindows()
2. *** 作彩色图像
# RGB:红色(Red)、绿色(Green)、蓝色(Blue);
# 表示图像时,每个通道中像素的取值范围为:[0,255];
# 用3个通道的像素组合表示彩色图像;RGB颜色空间中颜色通道R、G、B,
# OpenCV中颜色通道顺序为:B、G、R;
import cv2 as cv
import numpy as np
img = np.zeros((480, 640, 3), dtype = np.uint8)
r0 = 0
r1 = 1
r2 = 2
while True:
img[:160, :, r0] = 255
img[160 : 320, :, r1] = 255
img[320 : 480, :, r2] = 255
cv.imshow("ColorImg", img)
key = cv.waitKey(1000) & 0xFF
img[:, :, :] = 0 # 像素全置为0
t = r0
r0 = r1
r1 = r2
r2 = t
if (key == 27) or (key == ord("q")):
break
cv.destroyAllWindows()
3.图像通道 *** 作
# 1.通过数组索引拆分通道
import cv2 as cv
img = cv.imread("01.jpg")
cv.imshow("Logo", img)
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
cv.imshow("Logo_b", b)
cv.imshow("Logo_g", g)
cv.imshow("Logo_r", r)
cv.waitKey(0)
# 2.使用cv2.split()函数拆分通道
import cv2 as cv
img = cv.imread("01.jpg")
cv.imshow("Logo", img)
b, g, r = cv.split(img)
cv.imshow("Logo_B", b)
cv.imshow("Logo_G", g)
cv.imshow("Logo_R", r)
cv.waitKey(0)
# 3.使用cv2.merge()函数合并图像通道
import cv2 as cv
img = cv.imread("01.jpg")
# 拆分图像通道
b, g, r = cv.split(img)
# 按指定顺序合并
rgb = cv.merge([r, g, b])
gbr = cv.merge([g, b, r])
cv.imshow("Logo_Initial", img)
cv.imshow("Logo_RGB", rgb)
cv.imshow("Logo_GBR", gbr)
cv.waitKey(0)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)