标签: python-imaging-library

是否可以在 Python 图像库 (PIL) 中屏蔽图像?

我有一些交通摄像头图像,我只想提取道路上的像素。我以前使用过遥感软件,可以指定类似的操作

img1 * img2 = img3

其中 img1 是原始图像,img2 是直接的黑白蒙版。本质上,图像的白色部分将评估为

img1 * 1 = img3

黑色部分的评估结果为

img1 * 0 = img3

因此,人们可以拍摄图像的一部分,让所有不重要的区域变成黑色。

有没有办法使用 PIL 来做到这一点?我找不到任何与我习惯看到的图像代数类似的东西。我尝试过混合功能,但这只会使它们一起消失。我已经阅读了一些关于 numpy 的内容,看起来它可能能够做到这一点,但在我深入研究之前,我想确定在 PIL 中没有直接的方法可以做到这一点。

谢谢。

python image mask image-processing python-imaging-library

2
推荐指数
2
解决办法
2万
查看次数

Python PIL.ExifTags - 不确定它是什么

我正在阅读在GitHub上找到的一些代码(请参阅下面的代码摘录),这些代码涉及使用 PIL 从 EXIF 获取纬度和经度。除了 TAGS.get(tags,tags) 之外,我基本上可以跟踪正在发生的事情。当我查看Pillow 参考材料时,它给出了一个示例,但不足以让我了解代码正在引入什么或为什么代码有两个“标签”变量显示,例如(标签,标签)。如果有人可以阐明这个问题或提供更详细的参考材料的链接,我们将不胜感激。

def get_exif_data(image):
    """Returns a dictionary from the exif data of an PIL Image item. Also converts the GPS Tags"""
    exif_data = {}
    info = image._getexif()
    if info:
        for tag, value in info.items():
            decoded = TAGS.get(tag, tag)
            if decoded == "GPSInfo":
                gps_data = {}
                for t in value:
                    sub_decoded = GPSTAGS.get(t, t)
                    gps_data[sub_decoded] = value[t]

                exif_data[decoded] = gps_data
            else:
                exif_data[decoded] = value
Run Code Online (Sandbox Code Playgroud)

python python-imaging-library

2
推荐指数
1
解决办法
5282
查看次数

使用 Tkinter 和 PIL 显示 .png 图像

我尝试在 Tkinter Label 中显示 .png 文件,但实际上我在应该显示图像的地方只得到了空白区域。这是非常简单的代码,我不知道出了什么问题。

from Tkinter import *
from PIL import Image, ImageTk

root = Tk()

image = Image.open('image.png')
display = ImageTk.PhotoImage(Image.open(image))

label = Label(root, image=display)
label.pack()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

tkinter python-imaging-library python-2.7

2
推荐指数
1
解决办法
1万
查看次数

Python PIL Crop 不裁剪图像

我有以下函数来裁剪图像:

def crop(original_image):


    original_image = Image.open(original_image)
    original_image.crop((25, 25, 50, 50))
    #original_image.load()

    thumb_io = StringIO.StringIO()
    original_image.save(thumb_io, format='JPEG')

    thumb_file = InMemoryUploadedFile(thumb_io, None, 'foo2.jpg', 'image/jpeg',
                                  thumb_io.len, None)


    return thumb_file
Run Code Online (Sandbox Code Playgroud)

保存的图像只是原始图像,没有任何尺寸编辑。我尝试了负载和不负载,但这没有什么区别。

原始图像为 300 x 450。

我做错了什么,图像没有通过任何裁剪编辑保存?

python django image python-imaging-library python-2.7

2
推荐指数
1
解决办法
642
查看次数

类型错误:不支持的操作数类型 -:“元组”和“元组”

我尝试使用 Moravec 检测。当我尝试运行此代码时,出现一些错误:

     diff = diff - image.getpixel((x, y))
TypeError: unsupported operand type(s) for -: 'tuple' and 'tuple'
Run Code Online (Sandbox Code Playgroud)

我该如何修复它?任何帮助将不胜感激。代码是:

def moravec(image, threshold = 100):
    """Moravec's corner detection for each pixel of the image."""

    corners = []
    xy_shifts = [(1, 0), (1, 1), (0, 1), (-1, 1)]

    for y in range(1, image.size[1]-1):
        for x in range(1, image.size[0]-1):
            # Look for local maxima in min(E) above threshold:
            E = 100000
            for shift in xy_shifts:
                diff = image.getpixel((x + shift[0], y + shift[1])) …
Run Code Online (Sandbox Code Playgroud)

python python-imaging-library

2
推荐指数
1
解决办法
4万
查看次数

如何在Python中将一维图像数组转换为PIL图像

我的问题与Kaggle 数据科学竞赛有关。我正在尝试从包含28x28 图像的1 位灰度像素信息(0 到 255)的一维数组中读取图像。因此数组从0 到 783,其中每个像素都编码为 x = i * 28 + j。

转换成二维 28x28 矩阵如下:

000 001 002 003 ... 026 027
028 029 030 031 ... 054 055
056 057 058 059 ... 082 083
 |   |   |   |  ...  |   |
728 729 730 731 ... 754 755
756 757 758 759 ... 782 783
Run Code Online (Sandbox Code Playgroud)

出于图像处理(调整大小、倾斜)的原因,我想将该数组读入内存中的 PIL 图像。我对Matplotlib 图像函数做了一些研究,我认为这是最有前途的。另一个想法是Numpy 图像函数

我正在寻找的是一个代码示例,它向我展示了如何通过 Numpy …

python numpy image matplotlib python-imaging-library

2
推荐指数
1
解决办法
1万
查看次数

ImageFont 检测缺失字形(Python Pillow)

这是一个简短的例子

from PIL import ImageFont, ImageDraw

draw = ImageDraw.Draw(image)

# use a bitmap font
font = ImageFont.load("arial.pil")

draw.text((10, 10), "hello", font=font)

# use a truetype font
font = ImageFont.truetype("arial.ttf", 15)

draw.text((10, 25), "world", font=font)
Run Code Online (Sandbox Code Playgroud)

我想知道字体是否缺少渲染文本中的任何字形。

当我尝试渲染丢失的字形时,我得到一个空方块。

draw.text((10, 10), chr(1234), font=font)
Run Code Online (Sandbox Code Playgroud)
  • 如何以编程方式确定丢失的字形?
  • 如何列出ttf文件中的可用字形?

这两个问题几乎是一样的。

我更喜欢使用 Pillow 来确定我想要什么。PyPI 的其他模块也受到欢迎。

python python-imaging-library python-3.x

2
推荐指数
1
解决办法
3876
查看次数

将矩形图像重塑为正方形

我想将矩形图像转换为正方形图像。但是,我有问题。

我的试用Python代码在这里:

from PIL import Image
import numpy as np

im = Image.open('aa.png')
pixMap = im.load()

img = Image.new( im.mode, im.size)
sqrWidth = np.ceil(np.sqrt(im.size[0]*im.size[1])

pixNew = Image.new(im.mode, (im.size[0]*im.size[1], 1))
pixSave = Image.new(im.mode, (sqrWidth, sqrWidth))

k=0
for i in range(img.size[0]):
    for j in range(img.size[1]):
        pixNew[k] = pixMap[i, j]
        k=k+1

k=0
for i in range(sqrWidth):
    for j in range(sqrWidth):
        pixSave[i, j] = pixNew[k]
        k=k+1

im.close()
img.show()       
img.save("out.png") 
img.close()
Run Code Online (Sandbox Code Playgroud)

我的错误在这里:

Traceback (most recent call last):
  File "rect2square.py", line 13, in <module>
    pixNew[k] = …
Run Code Online (Sandbox Code Playgroud)

python image python-imaging-library

2
推荐指数
1
解决办法
1万
查看次数

为决策树模型绘制树时出现错误:“TypeError:‘模块’对象不可调用”

我编写了代码来可视化决策树模型。最初,我遇到了诸如未找到 graphviz 的可执行文件之类的错误,但我将其路径添加到环境变量中,甚至重新安装了 graphviz 模块。现在似乎工作得很好。但现在出现以下错误:

  Traceback (most recent call last):
  File "C:/Ankur/Python36/Python Files/Decision_Tree.py", line 57, in 
  <module>
  Image(graph.create_png())
  TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)

代码如下。

from sklearn import tree
from io import StringIO
from PIL import Image
from graphviz import Graph
import pydotplus as py
# Code for creating the model and fitting the data.
#...........................
dot_data=StringIO()
tree.export_graphviz(clf,out_file=dot_data)
graph=py.graph_from_dot_data(dot_data.getvalue())
Image(graph.create_png())
Run Code Online (Sandbox Code Playgroud)

python python-imaging-library

2
推荐指数
1
解决办法
7244
查看次数

如何将 PIL.ImageTk.PhotoImage 保存为 jpg

我想将 PIL.ImageTk.PhotoImage 保存到文件中。我的方法是创建一个“打开”文件并调用“写入”方法,但它不起作用,因为我不知道如何从对象获取字节数组。

def store_temp_image(data, image):
    new_file_name = data.number + ".jpg"
    with open(os.path.join("/tmp/myapp", new_file_name), mode='wb+') as output:
        output.write(image)
Run Code Online (Sandbox Code Playgroud)

错误信息如下:

TypeError: a bytes-like object is required, not 'PhotoImage'
Run Code Online (Sandbox Code Playgroud)

我通常会找到将 ImageTk 对象转换为 PIL 对象的方法,但反之则不然。从文档中我也无法得到任何提示。

python python-imaging-library

2
推荐指数
1
解决办法
4206
查看次数