Python上的图像转换/处理到灰度

时间:2017-05-10 04:56:47

标签: python

我对如何将图像转换为灰度感到困惑。

这是我正在使用的图片:http://i.imgur.com/WaaqRmV.png我们还有一个.py文件用于此问题https://pastebin.com/VNNRacBx(它是预制的)。

import cImage as image

img = image.Image("testimage.gif")
win = image.ImageWin(img.getWidth(), img.getHeight())
img.draw(win)
img.setDelay(1,15)  

for row in range(img.getHeight()):
    for col in range(img.getWidth()):
        p = img.getPixel(col, row)

        newred = 255 - p.getRed()
        newgreen = 255 - p.getGreen()
        newblue = 255 - p.getBlue()

        newpixel = image.Pixel(newred, newgreen, newblue)

        img.setPixel(col, row, newpixel)

img.draw(win)
win.exitonclick()

到目前为止,我所拥有的一个问题是如何将其转换为灰度?在工作簿中,它说我可以通过平均红色,绿色和蓝色强度来创建灰度像素,然后对所有的em使用该值,但不确定它是如何完成的。

每当我运行它时,为什么我会在img.SetDelay(1,15)中出错?我不能完全看出它有什么问题。

这是绝对的初学者Python课程我参加了这个夏季学期,我尝试在这上面查阅教程和YouTube视频但是所有这些都比我正在处理的内容复杂得多而且我没有&# 39;不了解他们在做什么。我会做点什么吗

grayscaleWeighted(image, redWeight, greenWeight, blueWeight) ?

还有一个问题,是否有任何网站建议帮助我了解其中一些内容?到目前为止,我已经完成了一些Python模块,函数,Turtle Graphics和Selection。欢迎任何帮助,欢呼。

2 个答案:

答案 0 :(得分:0)

python成像库(PIL)有各种各样的工具,要将图像转换为灰度,你可以这样做:

from PIL import Image 
image_file = Image.open("testimage.gif")
image_file = image_file.convert('L') # convert image to grayscale
image_file.save('testimage.gif')

通过以下方式下载PIL /枕头(PIL前叉)

pip install Pillow

http://pillow.readthedocs.io/en/4.1.x/reference/Image.html#PIL.Image.Image

来自cImage源代码,您也可以这样做而不是使用PIL:

from cImage import *

def grayPixel(p):
    avg = (p.getRed() + p.getGreen() + p.getBlue()) // 3
    return Pixel(avg,avg,avg)

def makeGrayScale(imageFile):
    myimagewindow = ImageWin("Image Processing",600,200)
    oldimage = Image(imageFile)            
    oldimage.draw(myimagewindow)

    width = oldimage.getWidth()
    height = oldimage.getHeight()
    newim = EmptyImage(width,height)

    for row in range(height):
        for col in range(width):
            originalPixel = oldimage.getPixel(col,row)
            newPixel = grayPixel(originalPixel)
            newim.setPixel(col,row,newPixel)

    newim.setPosition(width+1,0)
    newim.draw(myimagewindow)
    myimagewindow.exitOnClick()

makeGrayScale('testimage.gif')

答案 1 :(得分:0)

您可以查看here。要将RGB图像转换为灰度而不是实现自己的方法,您可以

from PIL import Image
img = Image.open('image.png').convert('LA')
img.save('greyscale.png')

如果您可以专门询问需要帮助的主题,那将会很棒。到那时,了解其中任何一个的最佳位置将是相应主题的官方文档。从那里,您可以联系他们的论坛寻求帮助或其他讨论。