5

ローカルディレクトリに画像を保存し、そのディレクトリから画像を読み取るプログラムがあります。

しかし、私は画像を保存したくありません。URLから直接読みたい。

これが私のコードです:

import cv2.cv as cv
import urllib2

url = "http://cache2.allpostersimages.com/p/LRG/18/1847/M5G8D00Z/posters/curious-cat.jpg"
filename = "my_test_image" + url[-4:]
print filename
opener = urllib2.build_opener()

page = opener.open(url) 
img= page.read()

abc = open(filename, "wb")
abc.write(img)
abc.close()

img = cv.LoadImage(filename)

cv.ShowImage("Optical Flow", img)
cv.WaitKey(30)

次のように変更した場合:

img = cv.LoadImage(img)

これにより、次のエラーが発生します。

引数1は、strではなくnullバイトを含まない文字列である必要があります

私に何ができる?

4

3 に答える 3

4

必要に応じて、PIL を使用できます。

import cv2.cv as cv
import urllib2
from cStringIO import StringIO
import PIL.Image as pil
url="some_url"

img_file = urllib2.urlopen(url)
im = StringIO(img_file.read())
source = pil.open(im).convert("RGB")
bitmap = cv.CreateImageHeader(source.size, cv.IPL_DEPTH_8U, 3)
cv.SetData(bitmap, source.tostring())
cv.CvtColor(bitmap, bitmap, cv.CV_RGB2BGR)

この方法では、画像ファイルを保存する必要はないと思います。

于 2012-06-29T11:06:48.820 に答える
-1

ここで述べたように、LoadImageは、データではなく、最初の引数としてファイル名を期待しています

于 2012-06-29T05:58:01.923 に答える