OpenCV技能树OpenCV基础IO与GUI

一只甲壳虫想组个乐队,但是临时找不到队友。请使用 OpenCV 读取下面的彩色甲壳虫图片 ‘bug.jpg’,帮助他变身灰色甲壳虫,然后完成组队。
在这里插入图片描述

显示甲壳虫乐队并写入到 ‘bug_band.jpg’:
在这里插入图片描述

import numpy as np
import cv2

if __name__ == '__main__':
    bug_img = cv2.imread("bug.jpg")

    bug_img1 = bug_img.copy()
    bug_img_gray = cv2.cvtColor(bug_img1, cv2.COLOR_BGR2GRAY)

    bug_img_gray_by_BGR_space = np.zeros_like(bug_img1)
    bug_img_gray_by_BGR_space[:, :, 0] = bug_img_gray
    bug_img_gray_by_BGR_space[:, :, 1] = bug_img_gray
    bug_img_gray_by_BGR_space[:, :, 2] = bug_img_gray

    bug_img_concat = np.concatenate((bug_img, bug_img_gray_by_BGR_space), axis=1)
    cv2.imwrite("bug_band.jpg", bug_img_concat)

    cv2.imshow('甲壳虫乐队', bug_img_concat)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

# import numpy as np
# import cv2
#
# if __name__ == '__main__':
#     bug_img = cv2.imread("bug.jpg")
#     bug_img_gray = cv2.cvtColor(bug_img, cv2.COLOR_BGR2GRAY)
#
#     bug_img_gray_by_BGR_space = cv2.cvtColor(bug_img_gray, cv2.COLOR_GRAY2BGR)
#
#     bug_img_concat = np.concatenate(
#         (bug_img, bug_img_gray_by_BGR_space),
#         axis=1
#     )
#     cv2.imwrite("bug_band.jpg", bug_img_concat)
#
#     cv2.imshow('甲壳虫乐队', bug_img_concat)
#
#     cv2.waitKey(0)
#     cv2.destroyAllWindows()

这两者是等价的
因为灰度图是单通道,所以无法直接进行合并为一个图像。
用灰度图的单通道,分别赋值给三通道,这样维度相同就可以合并成一个图像了。
以下是两种合并方法,第一种是opencv官方的通道赋值,另一种是我写的。

# bug_img_gray是单通道的灰度图

# 直接赋值给3个通道
bug_img_gray_by_BGR_space = cv2.cvtColor(bug_img_gray, cv2.COLOR_GRAY2BGR)

# 给每个通道赋值
bug_img_gray_by_BGR_space = np.zeros_like(bug_img1)
bug_img_gray_by_BGR_space[:, :, 0] = bug_img_gray
bug_img_gray_by_BGR_space[:, :, 1] = bug_img_gray
bug_img_gray_by_BGR_space[:, :, 2] = bug_img_gray
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐