计算机视觉基础3---图像和视频基本 *** 作2

计算机视觉基础3---图像和视频基本 *** 作2,第1张

参考书目:《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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/726418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存