【发布时间】:2019-02-13 08:52:35
【问题描述】:
前言:
我有一个硬币的图像。这是我插入 python 的硬币的任何通用图像,我想让这枚硬币成为灰度图像。变量P表示包含硬币图片RGB值的数组,我相信我可以通过将128下的任何RGB值更改为0,同时将@987654326以上的任何RGB值更改为灰度@到255。
错误:
我正在尝试使用 for 循环将 P 生成的数组中的值转换为 0、128 和 255。当我这样做时,我遇到的错误是:
TypeError: 'tuple' 和 'int' 的实例之间不支持'
代码:
import numpy as np
import matplotlib.pyplot as plt
P = plt.imread('coin.jpg')
for item in enumerate(P):
if item < 128:
item = 0
elif item > 128:
item = 255
【问题讨论】:
-
请注意,枚举返回一个元组:索引和值。所以
item这里是一个元组。您可能需要将其与item[1]进行比较 -
除了
enumerate问题之外,该代码不会在您的像素上正确循环。但即使您解决了这个问题,您的算法也不会将 RGB 图像转换为灰度或黑白图像。 -
我不知道matplotlib,但是使用PIL加载和转换图像为灰度或黑白会很容易。Numpy可以轻松加载PIL图像。
-
您正在谈论将普通图像转换为灰度图像,但您真正要做的是将它们转换为binary images。你真正想要什么?
标签: python numpy image-processing