如果我有以下格式的图像的像素行列表,如何获取图像?
[
[(54, 54, 54), (232, 23, 93), (71, 71, 71), (168, 167, 167)],
[(204, 82, 122), (54, 54, 54), (168, 167, 167), (232, 23, 93)],
[(71, 71, 71), (168, 167, 167), (54, 54, 54), (204, 82, 122)],
[(168, 167, 167), (204, 82, 122), (232, 23, 93), (54, 54, 54)]
]
Run Code Online (Sandbox Code Playgroud) 安装过程要求zlib,我甚至设置并从Github克隆它.我是所有这一切的新手.
错误信息:
C:\Users\GThell\Pillow>pip install -e .
Obtaining file:///C:/Users/GThell/Pillow
Requirement already satisfied: olefile in c:\users\gthell\appdata\local\programs\python\python36\lib\site-packages (from Pillow==3.5.0.dev0)
Installing collected packages: Pillow
Running setup.py develop for Pillow
Complete output from command c:\users\gthell\appdata\local\programs\python\python36\python.exe -c "import setuptools, tokenize;__file__='C:\\Users\\GThell\\Pillow\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" develop --no-deps:
Single threaded build for windows
running develop
running egg_info
writing Pillow.egg-info\PKG-INFO
writing dependency_links to Pillow.egg-info\dependency_links.txt
writing requirements to Pillow.egg-info\requires.txt
writing top-level names to Pillow.egg-info\top_level.txt
warning: manifest_maker: standard file '-c' not found
reading manifest file 'Pillow.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in' …Run Code Online (Sandbox Code Playgroud) 我是Python的新手,正在探索允许用户构建自定义图像的用途.我们的想法是客户端会选择一些选项,然后在服务器上创建图像然后下载(或用于服务器端的其他内容).
图像由许多图像组成,其中大多数是小图标类型的图像,这些图像是不规则形状并且具有透明度.所有图层都是.png文件.
我尝试使用枕头,但似乎图像需要与整个图像大小相同才能正确使用顶层的透明度.
这是我到目前为止所尝试的:
from PIL import Image
background = Image.open("Background.png")
foreground = Image.open("Trim.png")
fire = Image.open("Type_Fire_Large.png")
background = Image.alpha_composite(background, foreground)
background.paste(fire, (150, 150))
background.show()
Run Code Online (Sandbox Code Playgroud)
图像如下所示:
Background.png是阴影的"噪音",Trim.png是灰色的对角线.最好的部分:Trim.png中心透明,能够Background.png在中间显示.但它的尺寸也与图像相同.
问题是Fire; 请注意黑色边框(和奇数紫红色点)是如何的.文档指出叠加图像需要具有相同的大小.但似乎有人会想要在另一个图像上放置一个透明度较小的小图标并将它们组合成一个图像.
我不喜欢任何特定的图书馆,我对想法和替代方案持开放态度.我唯一想做的就是保持简单,所以创建一个完整的游戏引擎或类似的东西可能会产生太多.
from PIL import Image
from PIL import ImageDraw
from io import BytesIO
from urllib.request import urlopen
url = "https://i.ytimg.com/vi/W4qijIdAPZA/maxresdefault.jpg"
file = BytesIO(urlopen(url).read())
img = Image.open(file)
img = img.convert("RGBA")
draw = ImageDraw.Draw(img, "RGBA")
draw.rectangle(((0, 00), (img.size[0], img.size[1])), fill=(0,0,0,127))
img.save('dark-cat.jpg')
Run Code Online (Sandbox Code Playgroud)
这给了我一个巨大的黑色方块.我希望它是一个带有猫的半透明黑色方形.有任何想法吗?
我想从一个非常大的h5py数据集创建一个png或tiff图像文件,该数据集不能一次加载到内存中.所以,我想知道在python中是否有办法在补丁中写入png或tiff文件?(我可以将切片中的h5py数据集加载到a numpy.ndarray).我已经尝试使用枕头库并PIL.Image.paste给出了盒子坐标,但对于大图像,它会耗尽内存.
基本上,我想知道是否有办法做一些事情:
for y in range(0, height, patch_size):
for x in range(0, width, patch_size):
y2 = min(y + patch_size, height)
x2 = min(x + patch_size, width)
# image_arr is an h5py dataset that cannot be loaded completely
# in memory, so load it in slices
image_file.write(image_arr[y:y2, x:x2], box=(y, x, y2, x2))
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来做到这一点,而不是将整个图像加载到内存中.我已经尝试过枕头库,但它会将所有数据加载/保存在内存中.
编辑:这个问题不是关于h5py,而是关于如何将非常大的图像(无法加载到内存中)写入补丁中的文件 - 类似于通过逐行写入来构建大文本文件的方式.
我有大量的7百万像素灰度图像,我想批量处理它们来调整对比度和亮度,以便每个图像包含:
50%亮点(发光值为200-255的像素)
30%中间调(发光值为55-199的像素)
20%阴影(发光值为0-54的像素)
它需要合理有效,因为我只有1.8GHz和许多图像.据我所知,使用NumPy可以让PIL/Pillow比没有它更有效地处理图像,但我以前从未使用它.
如何用指定的背景颜色替换任何图像(png,jpg,rgb,rbga)的alpha通道?它还必须适用于没有Alpha通道的图像.
我正在使用Pillow在for循环中绘制矩形.这适用于我的台式电脑,但在我的笔记本电脑上抛出一个奇怪的例外.
这是代码(缩写):
from PIL import Image, ImageDraw
(...)
img = Image.open(sys.argv[1])
rimg = img.copy()
rimg_draw = ImageDraw.Draw(rimg)
(...)
(for-loop)
rimg_draw.rectangle((x1, y1, x2, y2), fill=None, outline=(255, 0, 0))
Run Code Online (Sandbox Code Playgroud)
这会引发以下异常:
rimg_draw.rectangle((x1, y1, x2, y2), fill=None, outline=(255, 0, 0))
File "/home/daniel/tensorflow2.7/lib/python2.7/site-packages/PIL/ImageDraw.py", line 203, in rectangle
ink, fill = self._getink(outline, fill)
File "/home/daniel/tensorflow2.7/lib/python2.7/site-packages/PIL/ImageDraw.py", line 124, in _getink
ink = self.draw.draw_ink(ink, self.mode)
TypeError: function takes exactly 1 argument (3 given)
Run Code Online (Sandbox Code Playgroud)
我不明白,为什么这段代码失败了:在Pillow,我们自己的文档 PIL.ImageDraw.Draw.rectangle是用这些参数定义的:rectangle(xy, fill=None, outline=None).
由于文件明确列出了可选参数fill和outline,为什么枕头抱怨,只需要1个参数? …
我是Python的图像处理新手,我正在尝试解决一个常见问题.我的图像上有一个人的签名.我想找到边缘并裁剪它以适合图像中的签名.
我尝试使用PIL,CV2,使用现有解决方案列表(文章和答案)裁剪Canny Edge Detection并裁剪图像,但似乎都没有.我正在寻找一个有效的解决方案.
我试过一些解决方案:
还有更多...虽然看起来很简单但没有工作.我使用任何现有解决方案遇到错误或预期输出.
pillow ×10
python ×10
python-2.7 ×2
python-3.x ×2
github ×1
numpy ×1
opencv ×1
pip ×1
python-3.6 ×1