opencv教程-图像基本操作

先说一些图像的基本知识:

(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

感兴趣的可以关注微信公众号:桔子的算法之路

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容