我有一些交通摄像头图像,我只想提取道路上的像素。我以前使用过遥感软件,可以指定类似的操作
img1 * img2 = img3
其中 img1 是原始图像,img2 是直接的黑白蒙版。本质上,图像的白色部分将评估为
img1 * 1 = img3
黑色部分的评估结果为
img1 * 0 = img3
因此,人们可以拍摄图像的一部分,让所有不重要的区域变成黑色。
有没有办法使用 PIL 来做到这一点?我找不到任何与我习惯看到的图像代数类似的东西。我尝试过混合功能,但这只会使它们一起消失。我已经阅读了一些关于 numpy 的内容,看起来它可能能够做到这一点,但在我深入研究之前,我想确定在 PIL 中没有直接的方法可以做到这一点。
谢谢。
我正在阅读在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) 我尝试在 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) 我有以下函数来裁剪图像:
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。
我做错了什么,图像没有通过任何裁剪编辑保存?
我尝试使用 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) 我的问题与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 …
这是一个简短的例子。
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)
这两个问题几乎是一样的。
我更喜欢使用 Pillow 来确定我想要什么。PyPI 的其他模块也受到欢迎。
我想将矩形图像转换为正方形图像。但是,我有问题。
我的试用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) 我编写了代码来可视化决策树模型。最初,我遇到了诸如未找到 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) 我想将 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 ×9
image ×4
python-2.7 ×2
django ×1
mask ×1
matplotlib ×1
numpy ×1
python-3.x ×1
tkinter ×1