Python OpenCV 将图像转换为字节字符串? [英] Python OpenCV convert image to byte string?

查看:86
本文介绍了Python OpenCV 将图像转换为字节字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 PyOpenCV.如何在没有临时文件和 imwrite 的情况下将 cv2 图像(numpy)转换为二进制字符串以写入 MySQL 数据库?

我用谷歌搜索但什么也没找到...

我正在尝试 imencode,但它不起作用.

capture = cv2.VideoCapture(url.path)捕获.set(cv2.cv.CV_CAP_PROP_POS_MSEC,浮动(url.query))self.wfile.write(cv2.imencode('png', capture.read()))

错误:

 文件server.py",第 16 行,在 do_GETself.wfile.write(cv2.imencode('png', capture.read()))类型错误:img 不是数字元组

帮助某人!

解决方案

如果您有一个图像 img(这是一个 numpy 数组),您可以使用以下方法将其转换为字符串:

<预><代码>>>>img_str = cv2.imencode('.jpg', img)[1].tostring()>>>类型(img_str)'str'

现在您可以轻松地将图像存储在数据库中,然后使用:

<预><代码>>>>nparr = np.fromstring(STRING_FROM_DATABASE, np.uint8)>>>img = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR)

您需要将 STRING_FROM_DATABASE 替换为包含对包含图像的数据库的查询结果的变量.

I'm working with PyOpenCV. How to convert cv2 image (numpy) to binary string for writing to MySQL db without a temporary file and imwrite?

I googled it but found nothing...

I'm trying imencode, but it doesn't work.

capture = cv2.VideoCapture(url.path)
capture.set(cv2.cv.CV_CAP_PROP_POS_MSEC, float(url.query))
self.wfile.write(cv2.imencode('png', capture.read()))

Error:

  File "server.py", line 16, in do_GET
  self.wfile.write(cv2.imencode('png', capture.read()))
  TypeError: img is not a numerical tuple

Help somebody!

解决方案

If you have an image img (which is a numpy array) you can convert it into string using:

>>> img_str = cv2.imencode('.jpg', img)[1].tostring()
>>> type(img_str)
 'str'

Now you can easily store the image inside your database, and then recover it by using:

>>> nparr = np.fromstring(STRING_FROM_DATABASE, np.uint8)
>>> img = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR)

where you need to replace STRING_FROM_DATABASE with the variable that contains the result of your query to the database containing the image.

这篇关于Python OpenCV 将图像转换为字节字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆