zoukankan      html  css  js  c++  java
  • python-opencv-图像颜色反转

    图像是由一个一个的像素组成的,每个像素又是由一个个不同的颜色值(OpenCV中为bgr模式)组成,其中每个颜色通道的值均为0-255。 

    所谓图像的颜色反转,就是将每个颜色通道值用255减去原通道值,得到一个新的颜色通道值,再重新组合成新的bgr颜色通道产生新像素而形成新的图像。举个极端的例子,比如一个纯白色像素点的值为(255,255,255),它经过颜色反转变换后形成的新的像素点为(0,0,0),也就是变成了纯黑色像素点。

    灰度图的图像颜色反转:

    import cv2
    import numpy as np
    
    img = cv2.imread("3.jpg",0)  #读取一张图片,灰度
    height,width=img.shape
    dst=np.zeros((height,width,1),np.uint8)
    for i in range(height):
        for j in range(width):
            dst[i,j]=255-img[i,j]
    
    cv2.imshow('img',img)
    cv2.imshow('dst',dst)
    cv2.waitKey()  #窗口等待任意键盘按键输入,0为一直等待,其他数字为毫秒数

    效果图:

    bgr图像的图像颜色反转:

    对于bgr图像而言,我们需要对b(蓝色)、g(绿色)、r(红色)三个颜色通道做处理。首先,我们仍然使用imread()函数读取原图像数据并使用shape属性获取相关图像信息,然后开始遍历像素点,与灰度图不同的是,我们需要对b、g、r三个颜色通道同时做用255减去当前颜色通道值的处理,然后再组成新的bgr值赋值给像素点,从而实现bgr图像的图像颜色反转。

    import cv2
    import numpy as np
    
    img = cv2.imread("2013.jpg",1)  #读取一张图片,彩色
    cha=img.shape
    height,width,deep=cha
    dst=np.zeros((height,width,3),np.uint8)
    for i in range(height):  #色彩反转
        for j in range(width):
            b,g,r=img[i,j]
            dst[i,j]=(255-b,255-g,255-r)
    cv2.imshow('img',img)
    cv2.imshow('dst',dst)
    cv2.waitKey()  

    效果图:

  • 相关阅读:
    svn的revert、checkout、clean up、setting
    jsonp跨域原理
    王亚伟北大演讲:一切通胀问题都是货币问题(全文)
    string <-> wstring
    点在多边形内 经典算法(转)
    不可不表的OSG智能指针之强指针与弱指针 《转载》
    一个shell脚本给客户使用服务器生成一个序列号
    Rsync(远程同步): linux中Rsync命令的实际示例
    一个 rsync同步文件脚本
    用UltraISO制作CentOS U盘安装盘
  • 原文地址:https://www.cnblogs.com/liming19680104/p/12220566.html
Copyright © 2011-2022 走看看