首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用opencv加载BytesIO图像

使用opencv加载BytesIO图像
EN

Stack Overflow用户
提问于 2017-10-08 03:48:31
回答 2查看 17.7K关注 0票数 10

我正在尝试从io.BytesIO()结构中加载一个带有OPENCV的图像。最初,代码使用PIL加载图像,如下所示:

代码语言:javascript
运行
复制
image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
image = Image.open(image_stream)
print('Image is %dx%d' % image.size)

我试着像这样用OPENCV打开:

代码语言:javascript
运行
复制
image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
img = cv2.imread(image_stream,0)
cv2.imshow('image',img)

但是似乎imread并没有处理BytesIO()。我收到一个错误。

我使用的是OPENCV 3.3和Python 2.7。有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2017-11-20 18:17:03

Henrique试试这个:

代码语言:javascript
运行
复制
import numpy as np
import cv2 as cv
import io

image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
file_bytes = np.asarray(bytearray(image_stream.read()), dtype=np.uint8)
img = cv.imdecode(file_bytes, cv.IMREAD_COLOR)
票数 22
EN

Stack Overflow用户

发布于 2018-11-06 01:27:34

arrybn给出的答案对我很有效。只需要在cv2.imshow之后添加一个cv2.waitkey(1)即可。代码如下:

服务器端:

代码语言:javascript
运行
复制
import io
import socket
import struct
import cv2
import numpy as np

server_socket = socket.socket()
server_socket.bind(('0.0.0.0', 8000))
server_socket.listen(0)

connection = server_socket.accept()[0].makefile('rb')
cv2.namedWindow("Image", cv2.WINDOW_NORMAL)
try:
    while True:
        image_len = struct.unpack('<L', connection.read(struct.calcsize('<L')))[0]
        if not image_len:
            break
        image_stream = io.BytesIO()
        image_stream.write(connection.read(image_len))
        image_stream.seek(0)
        file_bytes = np.asarray(bytearray(image_stream.read()), dtype=np.uint8)
        img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
        cv2.imshow("Image", img)
        cv2.waitKey(1)
finally:
    connection.close()
    server_socket.close()

基于示例Capturing to a network stream

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46624449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档