के साथ ओपनसीवी एकीकरण मैं अपने वेब कैम से ओपनसीवी वीडियो स्ट्रीम को हाईगुई की पेशकश के मुकाबले एक और जटिल गुई में एकीकृत करना चाहता था, कुछ बटन और कुछ और नहीं, हालांकि यह छोटा नहीं साबित हुआ है। मुझे कोई आधार उदाहरण नहीं मिल रहा है जिससे मैं गुई को डिजाइन करना शुरू कर सकता हूं। मैंने इस code को नए ओपनसीवी इंटरफेस में काफी खराब परिणाम के साथ बदलने की कोशिश की। मैं opencv, numpy और gui डिजाइन के लिए एक नया हूँ। कुछ समय वीडियो स्ट्रीम करता है लेकिन ज्यादातर समय यह बस वहां लटकता है। मुझे लगता है कि मेरी एक गलती Wx.BitmapFromBuffer (col, row, img) में हो सकती है क्योंकि पुराने संस्करण में उन्होंने पायल छवि प्रारूप का उपयोग किया था और अब यह numpy arrays का उपयोग कर रहा है, इसलिए मूल कोड में पायल फ़ंक्शन "imageData" का उपयोग किया गया था जैसा कि मैं कर रहा हूँ सीधे numpy सरणी गुजर रहा है। किसी भी मदद की वास्तव में सराहना की है। wxpython
यह मेरा कोड रूपांतरण है।
import wx
import cv2
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.displayPanel = wx.Panel(self)
self.displayPanel.SetSize(wx.Size(800,640))
self.cam = cv2.VideoCapture(1)
self.cam.set(3, 640)
self.cam.set(4, 480)
ret, img = self.cam.read()
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
row, col, x = img.shape
self.SetSize((col,row))
self.bmp = wx.BitmapFromBuffer(col, row, img)
self.displayPanel.Bind(wx.EVT_PAINT, self.onPaint)
self.playTimer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.onNextFrame)
self.playTimer.Start(1000/15)
def onPaint(self, evt):
if self.bmp:
dc = wx.BufferedPaintDC(self.displayPanel)
self.PrepareDC(dc)
dc.DrawBitmap(self.bmp, 0, 0, True)
evt.Skip()
def onNextFrame(self, evt):
ret, img = self.cam.read()
if ret == True:
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
self.bmp.CopyFromBuffer(img)
self.displayPanel.Refresh()
evt.Skip()
if __name__=="__main__":
app = wx.App()
MyFrame(None).Show()
app.MainLoop()
आपका कोड मेरे लिए काम नहीं करता है, लेकिन बाद नाबालिग समायोजित कर देता है तब भी वह अच्छे से करता है। समस्या मैं देख रहा हूँ यह है कि, उदाहरण के लिए, जब मैं खिड़की का आकार बदलता हूं जब तक कि मैं आकार बदलना बंद नहीं कर देता। लेकिन अगर मैं खिड़की को नहीं छूता तो यह ठीक हो जाता है। क्या आप फ्रेम को प्रदर्शित करने से परे कुछ और कर रहे हैं? – mmgp
@mmgp अगर आप टिप्पणी करते हैं तो आप सही हैं दो लाइनें जहां मैंने आकार निर्धारित किया है, यह काम करता है हालांकि मुझे लगता है कि मैं रंगीन चैनल खो रहा हूं। मैंने चित्र संलग्न किया है। – wind85
रंगों के संबंध में, 'cvtcolor' जगह में नहीं होता है, इसलिए आपको इसके परिणाम को ' img' – mmgp