分享

Python+opencv 图像处理(五)

 pythonjava学习 2021-04-06

    灰度反转

“你说的黑是什么黑......”有一首歌的歌词是这样的。

在图像中,黑是什么?

很简单,就是0嘛。

因为在数字图像里,用0表示黑。

那么,“你说的白是什么白?”

256灰度级的灰度图像中,白就是255

所谓的灰度反转,也叫反色变换,就是把黑变成白,白变成黑。

那黑和白之间的那些灰度如何反转呢,用255-灰度值就行了。

专业一点,用表达式表示为:

g(x,y)=L-1-f(x,y)

L为图像的灰度级,一般的灰度图像中,L=256.

g(x,y)为结果图像,f(x,y)为原图像。

1、灰度图像反色变换

如下图,左边的黑色字母T,背景色为白色,转换后,变成了白色的字母T,背景色变成了黑色。

其代码如下:
import cv2
img = cv2.imread('E:/image/T.png',0)
dst=255-img
cv2.imshow("img",img)
cv2.imshow("dst",dst)
是不是so easy?
那是不是所谓的反色变换都有如此明显的结果?
来看看lena美女的反色变换结果:

仔细区分,还是能发现,黑变成了白(如头发,眼睛),白变成了黑(如帽沿,肩膀)。但黑和白之间的那些灰度,也都是用255减去了它本身的灰度值,我只能看出来有变化,变化是从这种灰这成了那种灰,反正我的视觉没有经过训练,分不太出来,哪个像素到底灰度值是多少。

2、彩色图像反色变换

对于彩色图像来说,反色变换就是将图像中的RGB分量反转,专业一点地用表达式来写即是:

如下图所示,还是用lena美女图来示意。

结果图像好像有点玄幻,但你要相信,反色过来就是这样的。RGB三基色的相加或相减混色,出来的效果就是这样啦。

其代码如下:

import cv2
img = cv2.imread('E:/image/le.jpg')
b,g,r=cv2.split(img)
r=255-r
g=255-g
b=255-b
dst=cv2.merge([b,g,r])
cv2.imshow("img",img)
cv2.imshow("dst",dst)

代码也不复杂,即我们前面所介绍过的拆分与合并,对各个通道进行反色变换,再合并回来就行。

写代码的时候,因为三个通道的操作是一样的,也可以把上述代码简写为:

import cv2
img = cv2.imread('E:/image/le.jpg')
dst=255-img
cv2.imshow("img",img)
cv2.imshow("dst",dst)

两段代码的运行结果是一样一样的哟。 

查看Python+opencv图像处理历史记录。
张熹熹,公众号:python 图像处理python+opencv图像处理历史记录

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多