代码效果
自编程实现纯绿色和纯黄色图,图片要求高度180,宽度120,存储为jpg格式,质量默认。
源代码
import cv2
import numpy
img1=numpy.ones((180,120),dtype=numpy.uint8) #产生一个高180,宽120的数组,转换为unit8格式
img2=cv2.cvtColor(img1,cv2.COLOR_GRAY2BGR) #将img1转换为灰度图img2
img2[:,:,:]=[0,255,0] #设定图片img2颜色,RGB,绿色
img3=cv2.cvtColor(img1,cv2.COLOR_GRAY2BGR) #将img1转换为灰度图img3
img3[:,:,:]=[0,255,255] ##设定图片img3颜色,RGB,黄色
cv2.imwrite("e:/pythoncode/csdn/green.jpg",img2) #保存图img2并命名为green.jpg
cv2.imwrite("e:/pythoncode/csdn/yellow.jpg",img3) #保存图img3并命名为yellow.jpg
效果
green.jpg
yellow.jpg
用到的函数
-
np.ones(shape,dtype=None,order=‘C’)
返回给定形状和类型的新数组,填充 1 。
shape:代表数据形状,是个元组,如果shape=5代表创建一个五 个元素的一维数组,shape=(3,4) 代表创建一个3*4的数组
dtype:数据类型,可选,数组所需的数据类型,例如dtype=‘int’。 默认是 float64。
在opencv-python中,若想为图像创建一个容器,需要指定dtype=np.uint8,否则虽然你的容器矩阵中是有值的,但是无法正常imshow。具体内容可见博文opencv-python:创建图像容器 dtype=np.uint8order:{‘C’,‘F’},可选是否以内存中的C或Fortran连续(行或列)顺序存储多维数据。
-
cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片,p2是转换成何种格式。
cv2.COLOR_BGR2RGB 将BGR格式转换成RGB格式
cv2.COLOR_BGR2GRAY 将BGR格式转换成灰度图片
具体见博文cv2.imread()和cv2.cvtColor() 的使用