Opencv 学习笔记:创建与原图等尺寸的空白图像

在图像处理中,经常需要创建与原图尺寸、维度完全一致的空白图像(纯黑 / 纯白),用于掩膜制作、图像拼接等场景。本文通过极简代码,演示如何根据原图自动适配创建空白图像,兼容灰度 / 彩色图。

核心代码实现

python 复制代码
import cv2 as cv
import numpy as np
# 1. 以灰度模式读取原图
src = cv.imread(".\image\1.bmp", 0)
if src is None:
    print('could not load image')
    exit()
# 2. 判断图像维度(灰度图2维,彩色图3维)
A = len(src.shape)
if A == 3:
    # 彩色图:创建同尺寸3通道空白图,填充为白色(255)
    outimage = np.zeros((src.shape[0], src.shape[1], src.shape[2]), np.uint8)
    outimage.fill(255)
else:
    # 灰度图:创建同尺寸单通道空白图,填充为黑色(0)
    outimage = np.zeros((src.shape[0], src.shape[1]), np.uint8)
    outimage.fill(0)
# 3. 显示对比
cv.imshow('src', src)
cv.imshow('outimage', outimage)
cv.waitKey(0)
cv.destroyAllWindows()

关键知识点解析

  1. 图像维度判断
    • 灰度图src.shape返回(高, 宽),维度数len=2
    • 彩色图src.shape返回(高, 宽, 通道数),维度数len=3
    • 维度判断确保空白图与原图通道数一致,避免维度不匹配报错。
  2. np.zeros 创建空白数组
    • 参数格式(高, 宽, 通道数),数据类型np.uint8(图像专用 8 位无符号整型);
    • zeros默认生成全 0 数组(纯黑),需通过fill修改填充值。
  3. fill 填充像素值
    • fill(255):填充为纯白色(适用于彩色 / 灰度图);
    • fill(0):填充为纯黑色(默认值,可省略)。

扩展技巧

  • 快速创建彩色纯白图:outimage = np.ones_like(src) * 255(替代 zeros+fill,更简洁);

  • 创建指定颜色空白图(如红色): python

    运行

    复制代码
    # 彩色图专用,按BGR顺序赋值
    outimage = np.zeros_like(src)
    outimage[:, :, 2] = 255  # 红色通道(R)赋值255
  • 复用原图尺寸:h, w = src.shape[:2],后续直接用(h, w)创建,无需重复解析 shape。

相关推荐
点心的游戏开发世界2 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
香芋芋圆3 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
INS_KF3 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
点心的游戏开发世界3 小时前
Unity C# 脚本学习笔记:泛型
学习·unity·c#
tju新生代魔迷5 小时前
Verilog HDL 学习笔记(十三)| 第13章 编程语言接口(PLI)
笔记·学习
点心的游戏开发世界6 小时前
UnityShaderGraph滚动UV笔记
笔记·uv
瑞码空间6 小时前
git知识点黄金笔记
笔记·git·elasticsearch
我爱cope7 小时前
【计算机网络 | 网络层11:ICMP 协议:Ping 和 Traceroute 的底层原理】
网络·学习·计算机网络
天若有情6737 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
问天_观心7 小时前
大模型微调学习(一)
开发语言·人工智能·学习·语言模型·github