Python画布颜色「零基础小白必看教你在python画不同颜色的画布简单好玩」

文章目录摘要Numpy的ndarray数据结构的索引与赋值创建空白画布初始化白色的画布初始化彩色的画布利用cv2的内置方法merge与split 利用numpy内置的索引综合实验-初始化背景「?? 感谢大家」摘要在这篇文章中将给大家讲解如何分别用numpy的方法,与numpy与cv2结合的方法创建空白画布,创建白色画布,与创建彩色画布 。在讲解过程中还会介绍cv2进行通道分割cv2.split与通道合并cv2.merge的两个函数的具体使用以及深究numpy的ndarray数据结构的索引与赋值 。

Python画布颜色「零基础小白必看教你在python画不同颜色的画布简单好玩」

文章插图
这里多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等 。想要这些资料的可以关注小编,并私信“01”即可领取 。
numpy的ndarray数据结构的索引与赋值在使用画图工具的时候, 第一件事情就是创建一个新的空白画布,我们可以指定画布的大小和颜色 。
那我们如何使用opencv来创建一个空白的画布(值相同的图片) ?
其实image的数据结构上的图片,本质上就是numpy里面的ndarray的对象,创建一个画布本质上就是创建一个同等规格的ndarray 。
创建一个新的特定尺寸的ndarray我们可以使用np.zeors 函数,我们将图像的高度(height),图像的宽度(width),以及图像的通道数channel 以tuple 类型传入np.zeros 。再次声明是tuple类型 。
另外由于不是所有的numpy类型的数值,都可以放到opencv中进行图像处理.
数值取值范围在0-255,我们需要指定数据类型为uint8 unsigned integer 8-bit
np.zeros((height, width, channels), dtype="uint8")1复制代码举个例子:想创建一个800 x 600 x 3 的图片,一个BGR格式的图像,我们就得这么写:
# 初始化一个空画布 300×300 三通道 背景色为黑色 canvas_black = np.zeros((600, 800, 3), dtype="uint8")12复制代码得到的效果如下:
Python画布颜色「零基础小白必看教你在python画不同颜色的画布简单好玩」

文章插图
注意: height写在前面为什么Height写在前面?就得知道opencv图像的数据结构是numpy,Image的属性,其实就是numpy的ndarray数据格式的属性 。
我们可以直接获取img对象的诸多属性 , 例如我们打印lena图的属性,具体如下:
Python画布颜色「零基础小白必看教你在python画不同颜色的画布简单好玩」

文章插图
# -*- coding: utf-8 -*- import numpy as npimport cv2# 导入一张图像 模式为彩色图片img = cv2.imread('lena.jpg', cv2.IMREAD_COLOR)print("================打印图像的属性================")print("图像对象的类型 {}".format(type(img)))print(img.shape)print("图像宽度: {} pixels".format(img.shape[1]))print("图像高度: {} pixels".format(img.shape[0]))print("通道: {}".format(img.shape[2]))print("图像分辨率: {}".format(img.size))print("数据类型: {}".format(img.dtype))123456789101112131415复制代码输出结果:
================打印图像的属性================图像对象的类型 (256, 256, 3)图像宽度: 256 pixels图像高度: 256 pixels通道: 3图像分辨率: 196608数据类型: uint812345678复制代码有时候我们也可以偷懒,如果我们想创建与另外一个图像尺寸相同的画布的时候,我们可以使用np.zeros_like
canvas_black = np.zeros_like(img)1复制代码创建空白画布创建空白画布的函数如下:
def InitCanvas(width, height, color=(255, 255, 255)):canvas = np.ones((height, width, 3), dtype="uint8")canvas[:] = colorreturn canvas1234复制代码调用的时候传入图像的宽度、高度和画布的颜色 。例如创建一个800*600 颜色为纯黑色的画布:
canvas = InitCanvas(800, 600, color=(255,255,255))1复制代码创建空白画布的完整代码如下: