我最近需要对图像做一些处理,当我经过一系列协议解析和解码获取到图片流的时候,下一步需要用cv2对图片进行处理,首先就需要拿到cv2的图片对象。一般情况是import cv2img = cv2.imread("test.jpg")这样就能直接拿到img对象。可是我想在内存中直接转换,不想写入文件,再用cv2读入,这样就能少一个图片缓存的步骤。各位大神帮下忙,我鼓捣半天了,该怎么实现呢?比如fc= open("test.jpg","rb").read()这时候fc就是图片的文件流,这与我处理得到的文件流是一样的。那么现在我该如何用cv2读入呢?cv2.imread(fc)是肯定不对的。
1 回答
绝地无双
TA贡献1946条经验 获得超4个赞
一楼讲的很认真,逻辑也没毛病,但是很遗憾答非所问。
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()方法导入的图片对象了
- 1 回答
- 0 关注
- 655 浏览
添加回答
举报
0/150
提交
取消