2011-10-02 65 views
0

使用Java图像的我通过HTTP获取一些图片:在Python的OpenCV的

val ostream = new ByteArrayOutputStream() 
ImageIO.write(imageurl, imageType, ostream) 
val istream = new ByteArrayInputStream(ostream.toByteArray) 

(它实际上是斯卡拉,但使用此代码本身的Java库,所以没有具体的阶魔法)。
然后我推动istream到数据库(在我的情况下它是GridFS,它是MongoDB的一部分)。 现在我需要使用它的图像(字节阵列)在OpenCV中(W/Python绑定):

db = Connection(myserver,myport).DB 
fs = GridFS(db) 
bytearray = fs.get(id).read() 

鉴于这种情况,我怎么能在OpenCV函数使用创建Mat

回答

1

可能您需要imdecode功能。

+0

它确实存在于本机C++ OpenCV中,但我无法在代码中找到'imdecode' in python binding [reference](http://opencv.willowgarage.com/documentation/python/highgui_reading_and_writing_images_and_video.html)。 –

+0

@ om-nom-nom你使用的是什么版本的OpenCV?自OpenCV 2.2以来,此功能可用。如果没有此功能,您只能将图像保存到临时文件,并使用LoadImage读取它或使用其他库解码图像。 –

+0

2.1.0-2(python-opencv)来自gijzelaar回购。我已经看到了更新的opencv软件包,但是没有新的python绑定(我知道我可以使用willowgarage或其他站点的代码自己创建opencv,但是如果有另一个站点,我宁愿不这样做办法)。将图像写入磁盘然后将其交换回来将会起作用,但这会显着降低性能。 –