专栏地址:『youcans 的 OpenCV 例程 300 篇』


【OpenCV 例程300篇】07. 图像的创建(np.zeros)


OpenCV 中图像对象的数据结构是 ndarray 多维数组,因此可以用 Numpy 创建多维数组来生成图像。特别对于空白、黑色、白色、随机等特殊图像,用 Numpy 创建图像非常方便。

Numpy 可以使用 np.zeros() 等方法创建指定大小、类型的图像对象,也可以使用 np.zeros_like() 等方法创建与已有图像大小、类型相同的新图像。

函数说明:

numpy.empty(shape[, dtype, order]) # 返回一个指定形状和类型的空数组

numpy.zeros(shape[, dtype, order]) # 返回一个指定形状和类型的全零数组

numpy.ones(shape[, dtype, order]) # 返回一个指定形状和类型的全一数组

numpy.empty_like(img) # 返回一个与图像 img 形状和类型相同的空数组

numpy.zeros_like(img) # 返回一个与图像 img 形状和类型相同的全零数组

numpy.ones_like(img) # 返回一个与图像 img 形状和类型相同的全一数组

参数说明:

  • shape:整型元组,定义返回多维数组的形状
  • dtype:数据类型,定义返回多维数组的类型,可选项
  • img:ndarray 多维数组,表示一个灰度或彩色图像

基本例程:

    # 1.14 Numpy 创建图像
    # 创建彩色图像(RGB)
    # (1) 通过宽度高度值创建多维数组
    height, width, channels = 400, 300, 3  # 行/高度, 列/宽度, 通道数
    imgEmpty = np.empty((height, width, channels), np.uint8)  # 创建空白数组
    imgBlack = np.zeros((height, width, channels), np.uint8)  # 创建黑色图像 RGB=0
    imgWhite = np.ones((height, width, channels), np.uint8) * 255  # 创建白色图像 RGB=255
    # (2) 创建相同形状的多维数组
    img1 = cv2.imread("../images/imgLena.tif", flags=1)  # flags=1 读取彩色图像(BGR)
    imgBlackLike = np.zeros_like(img1)  # 创建与 img1 相同形状的黑色图像
    imgWhiteLike = np.ones_like(img1) * 255  # 创建与 img1 相同形状的白色图像
    # (3) 创建彩色随机图像 RGB=random
    import os
    randomByteArray = bytearray(os.urandom(height * width * channels))
    flatNumpyArray = np.array(randomByteArray)
    imgRGBRand = flatNumpyArray.reshape(height, width, channels)
    # (4) 创建灰度图像
    imgGrayWhite = np.ones((height, width), np.uint8) * 255  # 创建白色图像 Gray=255
    imgGrayBlack = np.zeros((height, width), np.uint8)  # 创建黑色图像 Gray=0
    imgGrayEye = np.eye(width)  # 创建对角线元素为1 的单位矩阵
    randomByteArray = bytearray(os.urandom(height*width))
    flatNumpyArray = np.array(randomByteArray)
    imgGrayRand = flatNumpyArray.reshape(height, width)  # 创建灰度随机图像 Gray=random

    print("Shape of image: gray {}, RGB {}".format(imgGrayRand.shape, imgRGBRand.shape))
    cv2.imshow("DemoGray", imgGrayRand)  # 在窗口显示 灰度随机图像
    cv2.imshow("DemoRGB", imgRGBRand)  # 在窗口显示 彩色随机图像
    cv2.imshow("DemoBlack", imgBlack)  # 在窗口显示 黑色图像
    key = cv2.waitKey(0)  # 等待按键命令

本例程的运行结果如下:
在这里插入图片描述

(本节完)


【第1章:图像的基本操作】
06. 像素的编辑(img.itemset)
07. 图像的创建(np.zeros)
08. 图像的复制(np.copy)
09. 图像的裁剪(cv2.selectROI)
10. 图像的拼接(np.hstack)


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐