python图像灰度化

图像灰度化的算法主要有以下3种:

     1)最大值法:使转化后的R,G,B得值等于转化前3个值中最大的一个,即:

                     R=G=B=max(R,G,B)                    (1)

这种方法转换的灰度图亮度很高。

代码实现:

import cv2.cv as cv  
image = cv.LoadImage('11.jpg')  
grayimg = cv.CreateImage(cv.GetSize(image), image.depth, 1)  #第一个参数为图片的宽度和高度,即size(width,height),第二个参数为图片的像素位深度depth,最后一个参数为图像的channel
for i in range(image.height):  
    for j in range(image.width):  
        grayimg[i,j] = max(image[i,j][0], image[i,j][1], image[i,j][2])
cv.ShowImage('srcImage', image)  
cv.ShowImage('grayImage', grayimg)  
cv.WaitKey(0) 

      2)平均值法:是转化后R,G,B的值为转化前R,G,B的平均值。即:

                     R=G=B=(R+G+B)/3                                (2)

这种方法产生的灰度图像比较柔和。

代码实现:

import cv2.cv as cv  
image = cv.LoadImage('11.jpg')  
grayimg = cv.CreateImage(cv.GetSize(image), image.depth, 1)  
for i in range(image.height):  
    for j in range(image.width):  
        grayimg[i,j] = (image[i,j][0] + image[i,j][1] + image[i,j][2])/3  
cv.ShowImage('srcImage', image)  
cv.ShowImage('grayImage', grayimg)  
cv.WaitKey(0) 

      3)加权平均值法:按照一定权值,对R,G,B的值加权平均,即:

                                    (3)

分别为R,G,B的权值,取不同的值形成不同的灰度图像。由于人眼对绿色最为敏感,红色次之,对蓝色的敏感性最低,因此一般情况下得到的灰度图像效果最好。

代码实现:

import cv2.cv as cv  
image = cv.LoadImage('11.jpg')  
grayimg = cv.CreateImage(cv.GetSize(image), image.depth, 1)  
for i in range(image.height):  
    for j in range(image.width):  
        grayimg[i,j] = 0.3 * image[i,j][0] + 0.11 * image[i,j][1] +  0.59 * image[i,j][2]  
cv.ShowImage('srcImage', image)             
cv.ShowImage('grayImage', grayimg)  
cv.WaitKey(0) 


你可能感兴趣的:(python图像灰度化)