猿问

cv2 如何从图片文件流获取image对象

我最近需要对图像做一些处理,当我经过一系列协议解析和解码获取到图片流的时候,下一步需要用cv2对图片进行处理,首先就需要拿到cv2的图片对象。
一般情况是
import cv2
img = cv2.imread("test.jpg")
这样就能直接拿到img对象。
可是我想在内存中直接转换,不想写入文件,再用cv2读入,这样就能少一个图片缓存的步骤。
各位大神帮下忙,我鼓捣半天了,该怎么实现呢?
比如
fc= open("test.jpg","rb").read()
这时候fc就是图片的文件流,这与我处理得到的文件流是一样的。
那么现在我该如何用cv2读入呢?
cv2.imread(fc)是肯定不对的。

慕无忌1623718
浏览 657回答 1
1回答

绝地无双

一楼讲的很认真,逻辑也没毛病,但是很遗憾答非所问。fc= open("test.jpg","rb").read()  #将fc文件字符流,转化为numpy数组#其实就是将fc中的字符流中的每个字符转换为对应的ascii码值#然后保存在np数组中,fc中字符的ascii码对应数组中的一个元素)#假如fc文件字符流由100个字符构成,那么fileNPArry数组的宽度就等于100)fileNPArray = np.fromstring(fc, np.uint8)#cv2.IMREAD_COLOR 以彩色模式读入#cv2.IMREAD_GRAYSCALE 以灰色模式读入img = cv2.imdecode(fileNPArray ,cv2.IMREAD_COLOR)#此时的img 就是你曾经通过cv2.imread()方法导入的图片对象了
随时随地看视频慕课网APP
我要回答