【问题标题】:What does cv2.imencode() do, and how do i achieve the same with PIL?cv2.imencode() 有什么作用,我如何使用 PIL 实现相同的功能?
【发布时间】:2022-01-13 06:40:14
【问题描述】:

我正在尝试做一个rest API,我遇到了这行代码-

_, img_encoded = cv2.imencode('.jpg', image)

这是做什么的?不幸的是,我不能将 OpenCV 用于 m 项目,那么有什么方法可以用 PIL 实现相同的目标吗?提前谢谢!

【问题讨论】:

标签: python opencv python-imaging-library


【解决方案1】:

它将 JPEG 压缩图像写入内存缓冲区 (RAM) 而不是磁盘。

使用 PIL:

#!/usr/bin/env python3

from PIL import Image
from io import BytesIO

# Create dummy red PIL Image
im = Image.new('RGB', (320,240), 'red')

# Create in-memory JPEG
buffer = BytesIO()
im.save(buffer, format="JPEG")

# Check first few bytes
JPEG = buffer.getvalue()
print(JPEG[:25])

【讨论】:

  • 为什么 JPEG 被切片?嗯...所以现在假设我想将这张图片发布到我的服务器,我是传入 Bufferm 还是 JPEG?
  • 根据代码中的注释,我只切片并打印了前 25 个字节,这样您就可以看到它看起来像普通的 JPEG,而不必看到数千页的十六进制过去。您可以将 JPEG 传递给服务器,因为它包含整个图像。
  • 它给了我这个错误:( ``` File "c:\Users\aadhi\Desktop\Code\Python\Scavenger Hunt\Server\test\client.py",第 21 行,在 image.save(buffer, format="JPG") 文件“C:\Users\aadhi\AppData\Local\Programs\Python\Python39\lib\site-packages\PIL\Image.py”,第 2229 行,在保存 save_handler = SAVE[format.upper()] KeyError: 'JPG'```
  • 将格式更改为 JPEG 似乎可行!
  • 哦,对不起!我已经更新了代码 - 感谢您让我知道。祝你的项目好运!
猜你喜欢
  • 2022-01-13
  • 2021-12-24
  • 1970-01-01
  • 2011-07-31
  • 2016-11-03
  • 1970-01-01
  • 2018-03-20
  • 2016-04-21
  • 2021-09-07
相关资源
最近更新 更多