从numpy.ndarray (图片)到字节流 / 从二进制文件到图片(numpy.ndarray):

从numpy.ndarray (图片)到字节流:

x = img.tobytes()

从二进制文件到图片(numpy.ndarray):

img = cv2.imdecode(np.fromstring(x, np.uint8) )

 eg1、

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)

 eg2、


我这个是读取的远程文件,我也是参照网上的办法, 这种办法我试过可行

import cv2   # opencv-python (3.4.2.16)
import numpy as np  # numpy (1.14.5)
import requests

file = requests.get("https://www.baidu.com/img/bd_logo1.png") 
img = cv2.imdecode(np.fromstring(file.content, np.uint8), 1)    #file.content 是读取的远程文件的字节流
cv2.imwrite('save3.jpg', img)     # 保存

 

发布了34 篇原创文章 · 获赞 115 · 访问量 26万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览