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

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

欢迎关注 『OpenCV 完整例程 100 篇』 系列,持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中

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) 通过宽度高度值创建多维数组
    width, height, channels = 400, 300, 3  # 行/高度, 列/宽度, 通道数
    imgEmpty = np.empty((width, height, channels), np.uint8)  # 创建空白数组
    imgBlack = np.zeros((width, height, channels), np.uint8)  # 创建黑色图像 RGB=0
    imgWhite = np.ones((width, height, 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(width * height * channels))
    flatNumpyArray = np.array(randomByteArray)
    imgRGBRand = flatNumpyArray.reshape(width, height, channels)

    # (4) 创建灰度图像
    imgGrayWhite = np.ones((width, height), np.uint8) * 255  # 创建白色图像 Gray=255
    imgGrayBlack = np.zeros((width, height), np.uint8)  # 创建黑色图像 Gray=0
    imgGrayEye = np.eye(width)  # 创建对角线元素为1 的单位矩阵    
    randomByteArray = bytearray(os.urandom(width * height))
    flatNumpyArray = np.array(randomByteArray)
    imgGrayRand = flatNumpyArray.reshape(width, height)  # 创建灰度随机图像 Gray=random   

本例程的运行结果如下:
【OpenCV 完整例程】07. 图像的创建(np.zeros)_第1张图片

欢迎关注 『OpenCV 完整例程 100 篇』 系列,持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中

【OpenCV 完整例程】01. 图像的读取(cv2.imread)
【OpenCV 完整例程】02. 图像的保存(cv2.imwrite)
【OpenCV 完整例程】03. 图像的显示(cv2.imshow)
【OpenCV 完整例程】04. 用 matplotlib 显示图像(plt.imshow)
【OpenCV 完整例程】05. 图像的属性(np.shape)
【OpenCV 完整例程】06. 像素的编辑(img.itemset)
【OpenCV 完整例程】07. 图像的创建(np.zeros)
【OpenCV 完整例程】08. 图像的复制(np.copy)
【OpenCV 完整例程】09. 图像的裁剪(cv2.selectROI)
【OpenCV 完整例程】10. 图像的拼接(np.hstack)
【OpenCV 完整例程】11. 图像通道的拆分(cv2.split)
【OpenCV 完整例程】12. 图像通道的合并(cv2.merge)
【OpenCV 完整例程】13. 图像的加法运算(cv2.add)
【OpenCV 完整例程】14. 图像与标量相加(cv2.add)
【OpenCV 完整例程】15. 图像的加权加法(cv2.addWeight)
【OpenCV 完整例程】16. 不同尺寸的图像加法
【OpenCV 完整例程】17. 两张图像的渐变切换
【OpenCV 完整例程】18. 图像的掩模加法
【OpenCV 完整例程】19. 图像的圆形遮罩
【OpenCV 完整例程】20. 图像的按位运算
【OpenCV 完整例程】21. 图像的叠加
【OpenCV 完整例程】22. 图像添加非中文文字
【OpenCV 完整例程】23. 图像添加中文文字
【OpenCV 完整例程】23. 图像添加中文文字
【OpenCV 完整例程】24. 图像的仿射变换
【OpenCV 完整例程】25. 图像的平移
【OpenCV 完整例程】26. 图像的旋转(以原点为中心)
【OpenCV 完整例程】27. 图像的旋转(以任意点为中心)
【OpenCV 完整例程】28. 图像的旋转(直角旋转)
【OpenCV 完整例程】29. 图像的翻转(cv2.flip)
【OpenCV 完整例程】30. 图像的缩放(cv2.resize)
【OpenCV 完整例程】31. 图像金字塔(cv2.pyrDown)
【OpenCV 完整例程】32. 图像的扭变(错切)
【OpenCV 完整例程】33. 图像的复合变换
【OpenCV 完整例程】34. 图像的投影变换
【OpenCV 完整例程】35. 图像的投影变换(边界填充)
【OpenCV 完整例程】36. 直角坐标与极坐标的转换
【OpenCV 完整例程】37. 图像的灰度化处理和二值化处理
【OpenCV 完整例程】38. 图像的反色变换(图像反转)
【OpenCV 完整例程】39. 图像灰度的线性变换

你可能感兴趣的:(OpenCV,完整例程,100,篇,opencv,python,图像处理,计算机视觉)