5

これが私の現在のコードです(言語はPythonです):

newFrameImage = cv.QueryFrame(webcam)
newFrameImageFile = cv.SaveImage("temp.jpg",newFrameImage)
wxImage = wx.Image("temp.jpg", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
wx.StaticBitmap(self, -1, wxImage, (0,0), (wxImage.GetWidth(), wxImage.GetHeight()))

ウェブカメラからキャプチャした iplimage を wxPython ウィンドウに表示しようとしています。問題は、最初にイメージをハードディスクに保存したくないことです。iplimage をメモリ内の別の画像形式に変換する方法はありますか? 他の解決策はありますか?

他の言語でこの問題に対する「解決策」をいくつか見つけましたが、この問題にはまだ問題があります。

ありがとう。

4

3 に答える 3

6

あなたがしなければならないことは次のとおりです。

frame = cv.QueryFrame(self.cam) # Get the frame from the camera
cv.CvtColor(frame, frame, cv.CV_BGR2RGB) # Color correction
                         # if you don't do this your image will be greenish
wxImage = wx.EmptyImage(frame.width, frame.height) # If your camera doesn't give 
                         # you the stream size, you might have to use (640, 480)
wxImage.SetData(frame.tostring()) # convert from cv.iplimage to wxImage
wx.StaticBitmap(self, -1, wxImage, (0,0), 
                (wxImage.GetWidth(), wxImage.GetHeight()))

Python OpenCV クックブックwxPython wikiを見て、これを行う方法を理解しました。

于 2010-07-27T14:35:48.587 に答える
3

はい、この質問は古いですが、答えを探している他のみんなと同じように、私はここに来ました。上記のソリューションの後の wx、numpy、および opencv のいくつかのバージョン cv2 および numpy イメージを使用した高速なソリューションを共有すると考えました。

これは、OpenCV2 で使用されている NumPy 配列スタイルの画像をビットマップに変換する方法であり、wxPython で表示要素に設定できます (現在):

import wx, cv2
import numpy as np

# Start with a numpy array style image I'll call "source"

# convert the colorspace to RGB from cv2 standard BGR, ensure input is uint8
img = cv2.cvtColor(np.uint8(source), cv2.cv.CV_BGR2RGB) 

# get the height and width of the source image for buffer construction
h, w = img.shape[:2]

# make a wx style bitmap using the buffer converter
wxbmp = wx.BitmapFromBuffer(w, h, img)

# Example of how to use this to set a static bitmap element called "bitmap_1"
self.bitmap_1.SetBitmap(wxbmp)

10分前にテストしました:)

これは、組み込みの wx 関数BitmapFromBufferを使用し、NumPy バッファ インターフェイスを利用するため、必要な作業は色を交換して期待される順序で取得することだけです。

于 2013-05-31T22:17:54.840 に答える
1

あなたは StringIO で行うことができます

stream = cStringIO.StringIO(data)
wxImage = wx.ImageFromStream(stream)

\wx\lib\embeddedimage.py で詳細を確認できます

ちょうど私の2セント。

于 2009-11-19T06:25:17.083 に答える