图像的五种创建方式

numpy库官方文档链接:https://docs.scipy.org/doc/numpy/index.html

Method1

import cv2 as cv
import numpy as np
img0 = cv.imread('C:\\Users\\Lin Xi\\Desktop\\OpenCV\\doge.jpg')
img1 = np.copy(img0)
img1.fill(127)
cv.imshow('test',img1)
cv.waitKey(0)

从路径读入一张图后进行copy,然后二次填充,.fill遵循RGB原理——在 RGB 模式下,每种 RGB 成分都可使用从 0(黑色)到 255(白色)的值
copy的两种方式:

img1 = np.copy(img0)
img1 = img0.copy()

Method2

import cv2 as cv
import numpy as np
blank = np.zeros([400,400],dtype = np.uint8)
blank.fill(255)
cv.imshow('test',blank)
cv.waitkey(0)

创建空白图像并填充
函数解析:

np.zeros(shape, dtype,order)

shape:矩阵大小,这里使用二维数组,可指定第三维为1,3,4
1:单通道
此通道上值为0-255。(255为白色,0是黑色) 只能表示灰度,不能表示彩色。
3:三通道
在BGR中 (255,255,255)为白色,(0,0,0)是黑色可以表示彩色, 灰度也是彩色的一种。
4:四通道
dtype:可选参数,表示数据类型,默认numpy.float64,一张图片的像素值范围是[0,255], 因此默认类型是unit8
order:可选参数,默认为C,是否在存储器中以C或Fortran连续(按行或列方式)存储多维数据,一般默认即可,可以无视。
函数返回一个给定形状和类型的用0填充的数组

Method3

import cv2 as cv
import numpy as np
img0 = np.ones([400,400],dtype = np.uint8)
img1 = np.reshape(img0,[200,800])
cv.imshow('test',img)
cv.waitKey(0)

函数解析:

np.ones(shape, dtype, order)

np.zeros()比较类似,在此引用官方文档,不再赘述

np.zeros().PNG

np.reshape(arr, newshape, order)

arr:要改变的数组
newshape:int或者tuple的整数
order:使用此索引顺序读取a的元素,并使用此索引顺序将元素放入重形数组中。“C”表示使用类似C的索引顺序读写元素,最后一个轴索引变化最快,回到第一个轴索引变化最慢。“F”表示使用类似fortran的索引顺序读写元素,第一个索引变化最快,最后一个索引变化最慢。注意,“C”和“F”选项不考虑底层数组的内存布局,只参考索引的顺序。“A”表示,如果A在内存中为连续的Fortran,则以类似Fortran的索引顺序读取/写入元素,否则为c顺序。(翻译自官方文档)

此函数返回一个新的视图对象或者副本

注:np.reshape()不改变像素,只改变矩阵行列数,像素总数不变,区别于np.resize()

Method4

import cv2 as cv
import numpy as np
img0 = cv.imread('C:\\Users\\Lin Xi\\Desktop\\OpenCV\\doge.jpg')
clone = np.zeros(img0.shape,img0.dtype)
cv.imshow('test',clone)
cv.waitKey(0)

实现图片的克隆

Method5

import cv2 as cv
import numpy as np
img0 = np.random.random_sample([400,400,3]) * 50 
cv.imshow('test',img0)
cv.waitKey(0)

函数解析:生成一个[0.0,1.0)之间随机浮点数或N维浮点数组(生成随机噪声图像)

np.random.random_sample(size)

size:可选参数,整形或整形元组,默认为None
此函数返回输出的形状

你可能感兴趣的:(图像的五种创建方式)