先说一些图像的基本知识:
(1)图像由像素构成,一个像素就是图片上的一个点。
(2)常见的图像有1通道(灰度图)、3通道(彩色图)、4通道(透明图),每个通道的像素值范围是[0,255],彩色图是我们最常见的,意思是每个像素由B、G、R三个值组成(也就是三原色),比如(255,255,255)表示白色。
1:图像读取
cv2.imread(filename[, flags])
img.shape[0]:高度度
img.shape[1]:宽度
这里重点说下flags,这是图像读取的方式,从文档看有13种读取方式,默认是3通道读取(这里一定要注意,特别是原图像是灰度图的时候要注意,会自动把灰度图读取为彩色图),所以最好是带上这个参数,不要省事。
常用的是以下3个:
cv::IMREAD_UNCHANGED= -1,(原图类型读取)
cv::IMREAD_GRAYSCALE= 0,(灰度图读取)
cv::IMREAD_COLOR= 1,(彩色图读取)


2:颜色空间转换
dst=cv2.cvtColor(src, code[, dst[, dstCn]])
这里code实在是太多了,主要的几个有COLOR_BGR2RGB 、COLOR_BGR2GRAY 、COLOR_GRAY2BGR 、COLOR_BGR2YCrCb 、COLOR_BGR2HSV 。

3:图像ROI(感兴趣区域)提取
img[h1:h2, w1:w2]


4:图像缩放
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
dsize: (width, height),这里注意下顺序是(缩放后的宽带、缩放后的高度)
interpolation:插值方式,共9种,常用的有cv2.INTER_NEAREST, cv2.INTER_LINEAR = 1, cv2.INTER_CUBIC = 2, cv2.INTER_AREA = 3。


5:通道分离与融合
mv=cv2.split(m[, mv])
dst=cv.merge(mv[, dst])


6:图像拼接
np.concatenate((img_1, img_2), axis=0)
axis=0:两张图片上下拼接
axis=1:两张图片左右拼接
cv2.hconcat:水平拼接
cv2.vconcat:垂直拼接


7:图像旋转
cv2.getRotationMatrix2D:生成旋转矩阵
cv2.warpAffine:图像按照矩阵进行变换


8:局部图像融合
cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])
公式:dst(I)=saturate(src1(I)∗alpha+src2(I)∗beta+gamma)


好了,今天基本就到这里,要十一了,祝大家国庆快乐(^U^)ノ~YO
感兴趣的可以关注微信公众号:桔子的算法之路