我正在尝试读取并保存带有一些附加标签的 tiff 文件,当我制作一个运行良好的新图像时,但是当我打开一个图像然后尝试写回一些元标记时,它不起作用(图像可以写入,但它将保留原始标签而不做任何更改)。
我附上了我的测试代码,非常感谢您的帮助!
from PIL import Image, TiffImagePlugin
def test_custom_metadata():
img = Image.open('myimage.tif')
info = TiffImagePlugin.ImageFileDirectory()
CustomTagId = 37000
info[CustomTagId] = 6
info.tagtype[CustomTagId] = 3 # 'short' TYPE
Image.DEBUG=True
TiffImagePlugin.WRITE_LIBTIFF = False # Set to True to see it break.
img.save('./temp2.tiff', tiffinfo = info)
test_custom_metadata()
Run Code Online (Sandbox Code Playgroud) 我可以加载 JPEG 图像,将其转换为位图并在 wx 应用程序中绘制它。然而,我很难将 PIL 图像对象转换为可以绘制到 wx 应用程序中的位图。
在网上,我能找到的最好的建议是做类似的事情
wx.Bitmap(PIL_image.tobytes())
Run Code Online (Sandbox Code Playgroud)
但是,这给了我以下错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 59: invalid start byte
Run Code Online (Sandbox Code Playgroud)
或者
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 51: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
有人对如何解决这一点有很好的提示吗?谢谢!
我正在尝试运行一个面部识别训练器,它会查看面部 jpg 图像的文件夹
import os # importing the OS for path
import cv2 # importing the OpenCV library
import numpy as np # importing Numpy library
from PIL import Image # importing Image library
EigenFace = cv2.face.EigenFaceRecognizer_create(15) # creating EIGEN FACE RECOGNISER
FisherFace = cv2.face.FisherFaceRecognizer_create(2) # Create FISHER FACE RECOGNISER
LBPHFace = cv2.face.LBPHFaceRecognizer_create(1, 1, 7,7) # Create LBPH FACE RECOGNISER
path = 'dataSet' # path to the photos
def getImageWithID (path):
imagePaths = [os.path.join(path, f) for f in os.listdir(path)]
FaceList …Run Code Online (Sandbox Code Playgroud) 我从这里发现我可以使用 Pillow 创建和保存动画 GIF。但是,该save方法似乎没有返回任何值。
我可以将 GIF 保存到文件中,然后使用 打开该文件Image.open,但这似乎没有必要,因为我并不真正希望保存 GIF。
如何将 GIF 保存到变量而不是文件中?也就是说,我希望能够制作some_variable.show()并显示 GIF,而无需将 GIF 保存到我的计算机上。
我正在尝试比较使用 Pillow 和(可选)Numpy 的 Python 3 应用程序中的图像。出于兼容性原因,我不打算使用其他外部非纯Python包。我在 Roseta 代码中找到了这个基于 Pillow 的算法,它可能符合我的目的,但需要一些时间:
from PIL import Image
def compare_images(img1, img2):
"""Compute percentage of difference between 2 JPEG images of same size
(using the sum of absolute differences). Alternatively, compare two bitmaps
as defined in basic bitmap storage. Useful for comparing two JPEG images
saved with a different compression ratios.
Adapted from:
http://rosettacode.org/wiki/Percentage_difference_between_images#Python
:param img1: an Image object
:param img2: an Image object
:return: A float with the percentage of difference, or None …Run Code Online (Sandbox Code Playgroud) 我有一个文件夹,里面video1有一堆按顺序排列的图像frame_00.png, frame_01.png, ...
我想要的是格式为 4D numpy 数组(number of frames, w, h, 3)
这就是我所做的,但我认为它很慢,有没有更快或更有效的方法来实现同样的事情?
folder = "video1/"
import os
images = sorted(os.listdir(folder)) #["frame_00", "frame_01", "frame_02", ...]
from PIL import Image
import numpy as np
video_array = []
for image in images:
im = Image.open(folder + image)
video_array.append(np.asarray(im)) #.transpose(1, 0, 2))
video_array = np.array(video_array)
print(video_array.shape)
#(75, 50, 100, 3)
Run Code Online (Sandbox Code Playgroud) 如何使用Python和PIL库垂直合并两个图像?我尝试这样做:
images_list = ['pil_text.png','pic.jpeg']
imgs = [ Image.open(i) for i in images_list ]
min_img_shape = sorted( [(np.sum(i.size), i.size ) for i in imgs])[0][1]
img_merge = np.vstack( (np.asarray( i.resize(min_img_shape,Image.ANTIALIAS) ) for i in imgs ) )
img_merge = Image.fromarray( img_merge)
img_merge.save( 'terracegarden_v.jpg' )
Run Code Online (Sandbox Code Playgroud)
但我在底部的图像被压扁了。
我将图像转换为整数列表。例如 [226, 137, 125, 226, 137, 125, 223, 137, 133, 223, 136, 128, 226, 138, 120, 226, 129, 116, 228, 138, 123, 227, 134, 124, 227、140、127、225、136、119、228、135、126、225、134、121、223、130、108、226、139、119、223、135、120、221、129、114、221 , 134、108、221、131、113、222、138、121、222、139、114、223、127、109、223、132、105、224、129、102、221、134、109、218、131 , 110、221、133、113、223、130、108、225、125、98、221、130、221、221、129、111、220、220、127、121、121、223、131、131、109、227、227、227、127、127、103、103、103、103, 223]我如何扭转这个过程并恢复我的形象。我使用 PIL 库和 python 3.6。
我在 Keras 中训练了一个用于图像分类的模型。训练是通过使用枕头加载图像来进行的。在部署过程中,图像会加载到 opencv 中,这会大大降低模型的准确性。我发现pillow和opencv加载的图像在显示时是不同的。
im = Image.open("cat.jpg")
plt.imshow(im)
plt.show()
Run Code Online (Sandbox Code Playgroud)
img = cv2.imread('cat.jpg')
plt.imshow(img)
plt.show()
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我尝试在 opencv 中加载图像并将其写入临时文件并将其加载到枕头中。
cv2.imwrite('cat2.jpg',img)
im1 = Image.open("cat2.jpg")
im == im1
Run Code Online (Sandbox Code Playgroud)
输出
错误的
im1我尝试将和打印im为数组,并且值完全不同。我必须在部署中使用opencv。无论如何,我可以保持模型的准确性吗?
opencv image-processing python-imaging-library conv-neural-network keras
我无法使用 py2app 构建包含枕头包的 python 应用程序。我在用着:
从命令行调用时脚本可以正常工作,并且如果在别名模式下编译,py2app 包也可以正常工作python3 setup.py py2app -A
但是,当我尝试使用以下命令编译独立包时:
python3 setup.py py2app --packages=PIL
我收到以下错误消息:
ValueError: New Mach-O header is too large to relocate in '/Users/RG/Library/Mobile Documents/com~apple~CloudDocs/iHal/Code/QuotesApp/dist/Quotes.app/Contents/Resources/lib/python3.7/PIL/.dylibs/liblcms2.2.dylib' (new size=1688, max size=1680, delta=48)
Run Code Online (Sandbox Code Playgroud)
我一直在搜索,但没有找到有关此问题的帮助,这是否可能是 El Capitan (OSX 10.11.16) 问题?