numpy - cv2.imread 和 open().read 有什么区别?
问题描述
我有这个代码:
import cv2
im = cv2.imread("0.jpg")
print(len(im.tobytes()))
fp = open("0.jpg", 'rb')
imb = fp.read()
print(len(imb))
它们不一样!现在一个函数将“imb”格式作为输入。但我只有“我”。我必须使用 cv2.imwrite 到磁盘然后使用 fp.read() 吗?有更快的方法吗?
我使用 mxnet 图像 imdecode。imdecode 将“imb”作为输入。但我就是我得到的。如何将“im”传递给 mx.img.imdecode?
解决方案
我不熟悉 mxnet 框架。但是根据您提供的代码,我猜您想要二进制格式的图像数据。
看看 OpenCV cv.imencode() API。
import cv2
im = cv2.imread("0.jpg")
img_encode = cv2.imencode('.jpg', im)[1]
我认为变量img_encode
可能是您想要的。
或者尝试以cv2.imwrite
更直观的方式使用“pyfilesystem”模块中的内存文件系统。[关联]
推荐阅读
- r - data.table 使用列前瞻的逐行操作
- pyspark - Pyspark计算按代码排序的时间差
- android - ASyncTask ConnectException:连接被拒绝
- html - 调整页面大小仅在某些时候有效
- react-native - 如何获取文本或按钮以在世博会地图上注册点击事件?
- javascript - 如何从字符串数组创建 Chrome 扩展上下文子菜单项
- python - 每行具有不同标准偏差的 Numpy 数组
- reactjs - 通过 ESLint 版本在 vscode 上启动 React 应用程序失败
- javascript - 新项目进入时将状态更改为true并在5秒后更改为false
- python - TensorFlow WALS 矩阵分解估计器的 export_savedmodel() 如何正确?