当前位置: 首页 > 面试题库 >

Python OpenCV从字节字符串加载图像

陶宜民
2023-03-14
问题内容

我正在尝试像PHP函数一样从字符串加载图像 imagecreatefromstring

我怎样才能做到这一点?

我有MySQL Blob字段图像。我正在使用 MySQLdb, 并且不想在PyOpenCV中创建用于处理图像的临时文件。

注意:需要cv(不是cv2)包装函数


问题答案:

这就是我通常用来将数据库中存储的图像转换为Python中的OpenCV图像的方式。

import numpy as np
import cv2
from cv2 import cv

# Load image as string from file/database
fd = open('foo.jpg')
img_str = fd.read()
fd.close()

# CV2
nparr = np.fromstring(img_str, np.uint8)
img_np = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR) # cv2.IMREAD_COLOR in OpenCV 3.1

# CV
img_ipl = cv.CreateImageHeader((img_np.shape[1], img_np.shape[0]), cv.IPL_DEPTH_8U, 3)
cv.SetData(img_ipl, img_np.tostring(), img_np.dtype.itemsize * 3 * img_np.shape[1])

# check types
print type(img_str)
print type(img_np)
print type(img_ipl)

我已添加了从numpy.ndarray到的转换cv2.cv.iplimage,因此上面的脚本将显示:

<type 'str'>
<type 'numpy.ndarray'>
<type 'cv2.cv.iplimage'>

编辑: 从最新的numpy开始1.18.5 +np.fromstring发出警告,因此np.frombuffer应在该位置使用。



 类似资料:
  • 问题内容: 相反,如果不从文件加载xml,如何从字符串加载呢? 问题答案: 您的XML字符串在哪里。有关更多信息,请参见MSDN文章。

  • 是否可以从base64字符串创建QIcon? 我看到我们可以将base64字符串加载到QByteArray中。我看到我们可以从QPixMap创建一个QIcon。 我尝试了以下方法: 什么都没显示出来。 PS:这里可以试试base64图像。

  • 我遇到了这样一个java字符串,其中以下内容是错误的: 我想这是因为字符串构造函数默认将主体字节[]的编码视为UTF-8,我不是100%确定。我如何能够将此字符串存储在字节[]中,并能够稍后将其转换回来?我想我需要能够确定字节[]的编码方式。我该怎么做呢? 一些上下文:我需要字节[],以便压缩数据,将其存储在数据库中,然后解压缩并将未压缩的字节[]转换回原始字符串。这个字符串最初来自某个下载了网页

  • 如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?

  • 问题内容: 我在字符串中有一个完整的XML文档,想要一个对象。Google会产生各种垃圾。什么是最简单的解决方案?(在Java 1.5中) 解决方案 感谢Matt McMinn,我决定完成此实现。对我来说,它具有适当级别的输入灵活性和异常粒度。(很高兴知道错误是来自格式错误的XML-还是来自错误的IO- 。) 问题答案: 在Java 1.5中,这对我有效-我去除了一些特殊的可读性。

  • 我有一个问题,我不能从一个对象加载3个属性显示在表视图上。我有一个付款对象,它由一个受益人对象(包括3个字符串-name、accountnumber和code)、一个金额字符串和一个引用字符串组成。如果这些项目都是同一个对象的一部分,我可以查看它们,但是当我将它们拆分时,它不会引起问题,并且单元格是空的。 每次我尝试将付款加载到tableView时,只有金额和引用是可见的。我尝试使用Propert