标签: python-imageio

python中的Imageio:压缩gif

有没有一种方法,同时具有使其压缩GIF imageiopython?我用大约200张图片制作gif,最终文件是30MB.我更喜欢它是5-10 MB.无论如何,图像是单色的,所以应该可以压缩.有没有可以使用的工具或指定它imageio

这是我制作gif的代码:

import os
import imageio as io
import re
#############################################################
#key to sort the file_names in order
numbers = re.compile(r'(\d+)')
def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts
############################################################
file_names = sorted((fn for fn in os.listdir('.') if fn.startswith('surface')), key = numericalSort)

#gif writer
with io.get_writer('python_growth.gif', mode='I', duration=0.1) as writer:
    for filename in file_names:
        image = io.imread(filename)
        writer.append_data(image)
Run Code Online (Sandbox Code Playgroud)

python python-imageio

13
推荐指数
1
解决办法
1964
查看次数

使用python中的imageio从图像制作gif

我尝试在网上阅读了很多例子,发现imageio它是完美的包.还找到了这里写的例子.

我刚刚按照图示示例并尝试了以下操作

import imageio as io
import os
file_names = sorted((fn for fn in os.listdir('.') if fn.startswith('surface')))
#making animation
with io.get_writer('surface.gif', mode='I', duration=0.5) as writer:
    for filename in file_names:
        image = io.imread(filename)
        writer.append_data(image)
writer.close()
Run Code Online (Sandbox Code Playgroud)

另一个例子.

images = []
for filename in file_names:
    images.append(io.imread(filename))
io.mimsave('surface1.gif', images, duration = 0.5)
Run Code Online (Sandbox Code Playgroud)

这两个都行不通.基本上我只看到gif中的第一帧并且眨眼并完成.持续时间设置为0.5秒,所以它应该工作正常.我可能错过了这里的一些东西.

python animated-gif python-imageio

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

用于MoviePy的macOS上的ffmpeg安装因SSL错误而失败

我正在尝试编写一个在Mac OS 10.11.16上使用MoviePy将Python文件转换为GIF的Python程序.我用:

import moviepy.editor as mp
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,说我需要打电话,imageio.plugins.ffmpeg.download()所以我可以下载ffmpeg.我用:

import imageio
imageio.plugins.ffmpeg.download()
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

Imageio: 'ffmpeg.osx' was not found on your computer; downloading it now.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Error while fetching file: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>.
Traceback (most recent call last):
  File "<pyshell#2>", …
Run Code Online (Sandbox Code Playgroud)

python macos ffmpeg moviepy python-imageio

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

ImageIO - 视频get_reader()fork安全吗?

get_reader()在一个上下文中的视频上使用ImageIO的功能,这样做的过程将被分叉.然后连续地对该读取器进行随机索引(使用该get_data方法).最终,我遇到了一个错误imageio.core.format.CannotReadFrameError: Could not read frame -1.如果进程未分叉,则不会发生此错误.ImageIO get_reader()不是叉安全吗?或者问题出在其他地方?

python-imageio

8
推荐指数
0
解决办法
157
查看次数

为什么 matplotlib.pyplot.imsave() 和 matplotlib.pyplot.imshow() 图像质量不同?如何保证同样的质量?

与 matplotlib.imshow() 相比,似乎 matplotlib.imsave() 使图像变亮。例如,看看下面的代码。

import imageio
import matplotlib.pyplot as plt
image = imageio.imread('image.jpg')
plt.imshow(image)
plt.imsave('image_new.jpg',image )

image_new = imageio.imread('image_new.jpg')
plt.imshow(image_new)
Run Code Online (Sandbox Code Playgroud)

保存的图像“image_new.jpg”(右)比“image.jpg”(左)略亮

图片.jpg image_new.jpg

图片来源:https ://c1.staticflickr.com/9/8191/8424182610_e23dcc6b4d_b.jpg

python matplotlib python-imageio

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

将Python get请求的响应(jpg内容)转换为Numpy数组

我的函数的工作流程如下:

  • 通过python get请求检索jpg
  • 将图像保存为 png(即使下载为 jpg)到磁盘上
  • 使用 imageio 从磁盘图像读取并将其转换为 numpy 数组
  • 使用数组

这就是我所做的保存:

response = requests.get(urlstring, params=params)
      if response.status_code == 200:
            with open('PATH%d.png' % imagenumber, 'wb') as output:
                output.write(response.content)
Run Code Online (Sandbox Code Playgroud)

这就是我将 png 加载并转换为 np.array 所做的事情

imagearray = im.imread('PATH%d.png' % imagenumber)
Run Code Online (Sandbox Code Playgroud)

由于我不需要永久存储我下载的内容,因此我尝试修改我的函数以便直接转换 Numpy 数组中的 response.content 。不幸的是,每个类似 imageio 的库都以相同的方式从磁盘读取 uri 并将其转换为 np.array。

我尝试了这个,但显然它不起作用,因为它需要输入 uri

response = requests.get(urlstring, params=params)
imagearray = im.imread(response.content))
Run Code Online (Sandbox Code Playgroud)

有什么办法可以克服这个问题吗?如何将我的response.content转换为np.array?

arrays numpy python-3.x python-requests python-imageio

7
推荐指数
1
解决办法
4085
查看次数

Python ImageIO警告:root:IMAGEIO FFMPEG_WRITER警告

我正在python中使用一些图像,我正在尝试将一系列尺寸= 961x509的图像转换为MP4电影文件.我已经做了这个并且它正在工作但我有一个非常烦人的问题,警告说这样的事情:

警告:root:IMAGEIO FFMPEG_WRITER警告:输入图像不能被macro_block_size = 16整除,从(509L,961L)调整为(512L,976L)以确保与大多数编解码器和播放器的视频兼容性.要防止调整大小,请使输入图像可被macro_block_size整除,或将macro_block_size设置为None(存在不兼容的风险).由于数据未对齐,您可能还会看到有关速度损失的FFMPEG警告.[swscaler @ 04f8ac40]警告:数据未对齐!这可能导致速度损失

出现警告的问题是我的图像分辨率,该分辨率应该可以被2整除,但我的不是.是否有任何可能只是让这个警告不再出现?因为我无法改变图像的大小,同时我也不想调整所有图像的大小.

这是我的代码:

ready_images = []

for img in videos['Images']:
    image = imageio.imread(img.fileName)
    ready_images.append(image)

videoName = videos['Images'][0].gifLocationPath + "//" + videos['Name']
imageio.mimwrite(videoName, ready_images, 'MP4')
Run Code Online (Sandbox Code Playgroud)

这里有人对我有什么解决方案吗?

更新:

如果我要以这种方式将macro_block_size放到None(这是我知道的唯一方法):

ready_images = []

for img in videos['Images']:
    image = imageio.imread(img.fileName)
    ready_images.append(image)

video_name = videos['Images'][0].gifLocationPath + "//" + videos['Name']
imageio.mimwrite(video_name, ready_images, 'MP4', macro_block_size = None)
Run Code Online (Sandbox Code Playgroud)

我将收到此错误消息:

打开输出流#0的编码器时出错:0 - 可能是不正确的参数,如bit_rate,rate,width或height

回溯(最近一次调用最后一次):文件"",第146行,在run()文件"",第136行,在运行中为i,_在tqdm中(枚举(pool.imap_unordered(generateGIFsWithThreads,videoList))):文件" ",第953行,iter for obj in iterable:File"",第673行,在下一个提升值IOError:[Errno 32] Broken pipe

FFMPEG命令:ffmpeg -y -f rawvideo -vcodec rawvideo …

python video mp4 ffmpeg python-imageio

6
推荐指数
1
解决办法
1201
查看次数

在 Python 中使用三个不同的库读取图像时的三种不同类型的输出

我正在用三个不同的库在 python 中读取图像

  1. 图像
  2. 图像
  3. 简历2。

我使用这些库中的每一个读取图像的输出都不同。例如

  1. 关于使用 imageio 阅读

    a = imageio.imread('test_img.png')

    输出类型为 - uint8,大小为 (500,334,4)

  2. 使用图像

    b = Image.open('test_img.png')

    类型 - 图像、大小 (334,500)

  3. 使用 cv2

    c = cv2.imread('test_img.png')

    类型- uint8,大小(500,334,3)

为什么在使用三个不同的库时,同一图像会得到三个不同的大小?请帮助我理解差异。

python opencv python-imaging-library python-imageio

6
推荐指数
1
解决办法
3646
查看次数

python imageio图像大小,而无需将图像加载到内存

我正在使用imageio和Python。它似乎比PIL和consorts具有更清洁的API,因此我想继续使用imageio而不是其他工具。

我知道如何获取图像大小:

height, width, channels = imageio.imread(filepath).shape
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以获取图像的大小,而无需将其完全加载到内存中?这应该是可能的,不是吗?至少对于一些格式(我想)在标题中具有图像大小?

python python-imageio

6
推荐指数
0
解决办法
823
查看次数

水平组合多个 GIF - python

我有两个 GIF 文件,我想将它们水平组合在一起显示,并一起播放。它们具有相同的框架。我在网上尝试了很多解决方案,但没有找到支持 GIF 的东西。我认为该imageio包支持 gif,但我找不到用它来将两个组合在一起的方法 简单地说,我想要这样的例子 在此处输入图片说明 这样做的任何想法?

python image gif python-imageio

6
推荐指数
1
解决办法
2188
查看次数