Image类的函数
Image.new(mode, size, color) ⇒ image 含义:使用给定的变量mode和size生成新的图像。Size是给定的宽/高二元组,这是按照像素数来计算的。对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值)。在版本1.1.4及其之后,用户也可以用颜色的名称,比如给变量color赋值为“red”。如果没有对变量color赋值,图像内容将会被全部赋值为0(图像即为黑色)。如果变量color是空,图像将不会被初始化,即图像的内容全为0。这对向该图像复制或绘制某些内容是有用的。 参考网址:https://blog.csdn.net/icamera0/article/details/50666815
Image.new(mode, size, color)
The mode
of an image defines the type and depth of a pixel in the image. The current release supports the following standard modes:
-
1
(1-bit pixels, black and white, stored with one pixel per byte) -
L
(8-bit pixels, black and white) -
P
(8-bit pixels, mapped to any other mode using a color palette) -
RGB
(3x8-bit pixels, true color) -
RGBA
(4x8-bit pixels, true color with transparency mask) -
CMYK
(4x8-bit pixels, color separation) -
YCbCr
(3x8-bit pixels, color video format) -
- Note that this refers to the JPEG, and not the ITU-R BT.2020, standard
LAB
(3x8-bit pixels, the Lab color space)HSV
(3x8-bit pixels, Hue, Saturation, Value color space)I
(32-bit signed integer pixels)F
(32-bit floating point pixels)
含义:
- 使用给定的变量mode和size生成新的图像。Size是给定的宽/高二元组,这是按照像素数来计算的。
- 对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值)。
- 在版本1.1.4及其之后,用户也可以用颜色的名称,比如给变量color赋值为“red”。如果没有对变量color赋值,图像内容将会被全部赋值为0(图像即为黑色)。如果变量color是空,图像将不会被初始化,即图像的内容全为0。这对向该图像复制或绘制某些内容是有用的。
import numpy as np
import cv2
font = cv2.FONT_HERSHEY_SIMPLEX#默认字体
im = np.zeros((50,50,3),np.uint8)
#添加文字,1.2表示字体大小,(0,40)是初始的位置,(255,255,255)表示颜色,2表示粗细
img2 = cv2.putText(im, '3', (0, 40), font, 1.2, (255, 255, 255), 2)
cv2.imshow('dst', img2)
cv2.waitKey(0)
#img2.show()
参考网址:https://www.zhihu.com/question/68390406
enumerate() 函数
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
random.random():生成一个0-1之间的随机浮点数.
仿射变换
仿射变换指的是一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。
图像进行仿射变换后,有以下几个特点: 二维图形之间的相对位置关系保持不变,平行线依旧是平行线,且直线上的点的位置顺序保持不变。
一个任意的仿射变换都可以表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)的形式。
三种常见形式:
- 旋转,rotation(线性变换)
- 平移,translation(向量加)
- 缩放,scale(线性变换)
仿射变换本质是一个2* 3的矩阵M乘上原图的每个坐标,得到目标图的对应点坐标。2*3矩阵M中的2表示目标点坐标的x与y,3中的第三维是平移分量。因此需要做的就是找到矩阵M,OpenCV提供 getAffineTransform 求出仿射变换, getRotationMatrix2D 来获得旋转矩阵。
这里简单说说仿射变换是怎么做到的。
现在有两幅图像(如下图),图像二是图像一经过放射变化得来的。那问题来了,我们怎么从这两个图像信息里挖掘出两图之间的映射关系?
很简单,只要在图像一种拿出三个点(1,2,3),图像二也拿出对应的三个点(1,2,3),就可以求出两图间的映射关系!
OpenCV通过两个函数的组合使用来实现仿射变换:
- 使用warpAffine来实现简单重映射
- 使用getRotationMatrix2D来获得旋转矩阵
参考网址:https://www.cnblogs.com/skyfsm/p/6882853.html
颜色转换函数
opencv中有多种色彩空间,包括 RGB、HSI、HSL、HSV、HSB、YCrCb、CIE XYZ、CIE Lab8种,使用中经常要遇到色彩空间的转化,以便生成mask图等操作。
cv2.cvtColor()
利用openCV在文件中添加文字