做完作业后,我偶然发现了一个关于Python和图像处理的问题。我必须说,使用Image lib不是一个选项。所以这就是
from scipy.misc import imread,imsave
from numpy import zeros
imga = zeros([100,100,3])
h = len(imga)
w = len(imga[0])
for y in range(h):
for x in range(w):
imga[y,x] = [255,255,255]
imsave("Result.jpg",imga)
我认为它会使我的照片变白,但它变黑了,我不明白为什么 这不是关于代码(我知道它看起来非常难看)。事实上,这是一个黑色的图像。
答案 0 :(得分:32)
图像中的每种颜色都用一个字节表示。因此,要创建图像数组,应将其dtype设置为uint8。
并且,您不需要for循环将每个元素设置为255,您可以使用fill()方法或切片索引:
import numpy as np
img = np.zeros([100,100,3],dtype=np.uint8)
img.fill(255) # or img[:] = 255
答案 1 :(得分:4)
创建imga时,需要设置单位类型。具体来说,更改以下代码行:
imga = zeros([100,100,3], dtype=np.uint8)
并且,将以下内容添加到您的导入中:
import numpy as np
这会在我的机器上显示白色图像。
答案 2 :(得分:0)
容易! 检查以下代码:
whiteFrame = 255 * np.ones((1000,1000,3), np.uint8)
255
是填充字节的颜色。
1000
,1000
是图片的大小。
3
是图像的颜色通道。
unit8
是类型
祝你好运
答案 3 :(得分:0)
# Create an array with a required colours
# The colours are given in BGR [B, G, R]
# The array is created with values of ones, the size is (H, W, Channels)
# The format of the array is uint8
# This array needs to be converted to an image of type uint8
selectedColor = [75, 19, 77] * np.ones((640, 480, 3), np.uint8)
imgSelectedColor = np.uint8(np.absolute(selectedColor))
答案 4 :(得分:0)
就这个问题的标题而言,我确实需要一个白色图像和一个枕头输入。此处提供的解决方案对我不起作用。
因此这里有一种不同的方式来生成用于其他目的的白色图像:
from PIL import Image
img = Image.new('RGB', (200, 50), color = (255,255,255))
可以在 Image.new() 函数的第二个和第三个参数中更改大小和颜色。
如果你想在这张图片上写一些东西或保存它,这就是示例代码。
from PIL import ImageFont, ImageDraw
fnt = ImageFont.truetype("Pillow/Tests/fonts/FreeMono.ttf", 30)
ImageDraw.Draw(img).text((0,0), "hello world", font=fnt, fill=(0,0,0))
img.save('test.jpg')
答案 5 :(得分:0)
标题太宽泛,会首先出现在 Google 上。我需要一个白色图像并使用 PIL 和 numpy。 PILlow 实际上适用于 numpy
import numpy as np
from PIL import Image
img = np.zeros([100,100,3],dtype=np.uint8)
img.fill(255) # numpy array!
im = Image.fromarray(img) #convert numpy array to image
im.save('whh.jpg')