有没有办法可以把imread得来的RGB三维矩阵转化成和f("name","rb")一样的二进制数据格式?

想要使用imencode 方法,原因是看到一个博文
内存图片二进制数据直接转为 OpenCV 数据格式
想反过来实现。
但是看错误提示,好像跟我想象的不太一样,好像是要读取某个文件:

"cv2.error: ..\..\..\opencv-2.4.13\modules\highgui\src\loadsave.cpp:415: error: (-2) could not find encoder for the specified extension in function cv::imencode"

这块不是很了解,请指教~
顺便说一下我的目的,我是想要从一张图片里切割一部分传入一个图像识别的api,不想切割了保存到本地再读取,因为要数据多的话,也感觉乱(实在不行了就这么干吧0.0)

阅读 5.3k
1 个回答

你使用了cv::imencode来把IplImage或cv::Mat编码并写到一段内存块里。
现在报错的原因,大致是因为找不到指定的编码器。
这个问题的原因可能是你写错了参数,也可能是你使用的OpenCV库没有编译对应格式的编码器支持。
如果参数没错,那么需要看看编译OpenCV的时候,是否开启相关支持。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏