python - 怎么把图片变成黑白
问题描述
我正在尝试将我的一些图片转换为黑白。到目前为止我有这个
import image
def black_and_white(pic):
for y in range(pic.getHeight()):
for x in range(pic.getWidth()):
p = pic.getPixel(x,y)
r = p.getRed()
g = p.getGreen()
b = p.getBlue()
if x > 0.128:
x = .255 * r + .255 * g +.255 * b
else:
x = .0 * r + .0 * g +.0 * b
x = int(x) ## to convert it to an integer
newp = image.Pixel(x, x, x) ## to convert to a new pixel
pic.setPixel(x, y, newp)
return pic
def main():
bell = image.Image("luther.jpg")
width = bell.getWidth()
height = bell.getHeight()
win = image.ImageWin(width, height)
bell.draw(win)
gs_bell = grayscale(bell)
gs_bell.draw(win)
main() ## starts execution
如果有人能给我一些建议,我将不胜感激!
对于缺乏明确性,我真的很抱歉。这是我得到的图像。 在此处输入图像描述
解决方案
你的代码有很多错误。x
当它实际上是像素坐标时,您将其用作像素值。
我会改变这个:
if x > 0.128:
x = .255 * r + .255 * g +.255 * b
else:
x = .0 * r + .0 * g +.0 * b
x = int(x) ## to convert it to an integer
newp = image.Pixel(x, x, x) ## to convert to a new pixel
对此:
v = 0.2989 * r + 0.5870 * g + 0.1140 * b
if v > 128.0:
v = 255
else:
v = 0
v = int(v) ## to convert it to an integer
newp = image.Pixel(v, v, v) ## to convert to a new pixel
RGB 权重值来自这篇文章。
推荐阅读
- migration - QNX 6.6 到 QNX 7.0 Neutrino 的区别
- jquery - 可折叠 HTML (CSS + JQ) - 图标错误和“关闭其他”
- java - 字符串中的表达式到数组列表
- jquery - 单击时淡入接下来的两个元素
- sql - 如何在 sql 中捕获 -- restore verifyonly from disk ="c:\common\backups" 的输出?
- swift - RxSwift:当源完成时,groupBy 是否应该向其每个 GroupedObservable 发送完成?
- sql - 通过 id 关联的 3 个表之间的 SQL 查询
- c# - 如何使用 RserveCLI2 从 R 获取数据帧到 C#
- python - Odoo 销售报告管道过滤器按资源合作伙伴类别
- c# - C# 表单。如何从该控件中引用控件