标签: python-imaging-library

如何为 tiff 文件添加附加标签

我正在尝试读取并保存带有一些附加标签的 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)

python tiff python-imaging-library

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

将 PIL 图像转换为 wxPython 位图图像

我可以加载 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)

有人对如何解决这一点有很好的提示吗?谢谢!

python wxpython bitmap python-imaging-library

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

OSError:无法识别图像文件“dataSet/.DS_Store”

我正在尝试运行一个面部识别训练器,它会查看面部 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)

opencv python-imaging-library

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

如何使用 Pillow 将动画 GIF 保存到变量

我从这里发现我可以使用 Pillow 创建和保存动画 GIF。但是,该save方法似乎没有返回任何值。

我可以将 GIF 保存到文件中,然后使用 打开该文件Image.open,但这似乎没有必要,因为我并不真正希望保存 GIF。

如何将 GIF 保存到变量而不是文件中?也就是说,我希望能够制作some_variable.show()并显示 GIF,而无需将 GIF 保存到我的计算机上。

variables gif save python-imaging-library

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

在Python中计算两个图像之间的绝对差之和的最快方法是什么?

我正在尝试比较使用 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)

python arrays numpy image-processing python-imaging-library

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

从文件夹中的图像序列获取 numpy 数组

我有一个文件夹,里面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 numpy image-processing python-imaging-library keras

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

如何垂直合并两个图像?

如何使用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)

但我在底部的图像被压扁了。

python numpy python-imaging-library

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

如何将整数列表转换为图像?

我将图像转换为整数列表。例如 [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。

python python-imaging-library python-3.x

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

opencv 和 PIL 的差异影响模型预测

我在 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

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

Python py2app 和枕头错误:Mach-O 标头太大

我无法使用 py2app 构建包含枕头包的 python 应用程序。我在用着:

  • Mac OSX El Capitan (10.11.16)
  • Python 3.7.3(通过 Homebrew 安装)
  • 枕头6.0.0
  • py2app 0.19
  • 马霍利布 1.11

从命令行调用时脚本可以正常工作,并且如果在别名模式下编译,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) 问题?

python py2app python-imaging-library

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