美文网首页
1.3-1.6 图片及像素基本操作

1.3-1.6 图片及像素基本操作

作者: Onicc | 来源:发表于2019-01-14 13:54 被阅读0次

    1.3 图片的读取与显示

    1. 引入OpenCV模块。
    2. 调用读取和显示图片的API。
    3. 程序停止(将程序暂停才可以显示出图像,不暂停程序将结束,将闪现出图像而无法观察)。
    import cv2
    
    # 功能:读取图片,参数1:图片地址,参数2:0 读取为灰度图 1 读取为彩色图
    img = cv2.imread('/2.image_read_show/image1.jpg', 1)
    # 功能:显示图片,参数1:窗口名称,参数2:需显示的图片
    cv2.imshow('image', img)
    # 暂停程序
    cv2.waitKey(0)
    

    运行结果

    1.4 图片的写入

    ​ 图片格式一般分为jpg和png格式,其文件包含文件头和进行压缩编码后的文件数据。

    import cv2
    img = cv2.imread('/1.4 image_write/image.jpg', 1)
    #参数1:写入图片的地址/名称 参数2:写入的数据
    cv2.imwrite('/1.4 image_write/image_origin.jpg', img)
    

    ​ jpg是压缩过后的图片文件,img是图像源文件即未压缩的图像数据。通过查看文件大小,可以看出写入生成的图片大小比读取的图片大,因为两种图片的压缩比不同。


    1.5 不同图片质量的写入

    ​ jpg图片为有损压缩,用图片的质量换取图片的大小;png为无损压缩,图片质量高,图片大小大,支持图片透明。

    import cv2
    
    img = cv2.imread('/1.5 image_write_quality/image.jpg', 1)
    # 参数1:写入图片的地址/名称 参数2:写入的数据 参数3:图片质量 50%(0-100)
    cv2.imwrite('/1.5 image_write_quality/image_test.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])
    # 参数1:写入图片的地址/名称 参数2:写入的数据 参数3:图片压缩比 0(0-9)
    cv2.imwrite('/1.5 image_write_quality/image_test.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 0])
    

    ​ 可以观察出,png的图片大小非常大,因为设置了0压缩即不压缩图片;生成的jpg文件比读取的文件小,因为设置图片质量为读取图片质量的50%。

    1.6 像素的读取与写入

    1.6.1 像素操作基本知识

    ​ 图片由每个像素组成,我们所见到的420*320的图片,实质上是有420*320个像素组成,每个像素是由RGB三种颜色组成即红绿蓝,每种颜色的颜色深度为8bit,也就是0-255。因此对于不含透明度的图片而言,一个420*320的图片大小为430*320*3*8(bit)=430*320*3*8/8(B)=430*320*3*8/8/1024/1024(M)=0.4M,而对于像png这种带透明度的图像,其每个像素有RGB+alpha组成。

    ​ 图片都有相应的坐标来确定像素,以图片的右上角为原点,原点向右为x轴,原点向下为y轴,即x表示列,y表示行,因此可以通过xy查找每个像素;对于jpg图片而言,其像素顺序是BGR,不同格式的像素顺序颇为不同。

    1.6.2 像素操作代码

    import cv2
    
    img = cv2.imread('1.6 image_pixel/image.jpg', 1)
    # img[100, 100]是一个元组
    # 获取图像坐标为(100,100)的像素值
    # jpg像素格式为BGR
    (b,g,r) = img[100,100]
    print(b, g, r)
    # 像素的写入
    for i in range(0, 200):
        img[i, 100] = (255, 0, 0)
    
    cv2.imshow('image', img)
    cv2.waitKey(0)
    

    运行结果:


    相关文章

      网友评论

          本文标题:1.3-1.6 图片及像素基本操作

          本文链接:https://www.haomeiwen.com/subject/uviddqtx.html