问题描述
我已阅读了大多数相关问题,并设法解决了大多数问题。这里有很多很好的信息。
- Python 3.7
- wxPython 4.0.4
- gtk2(凤凰)
- wxWidgets 3.0.5
我的技能:从gwBasic开始编程,但是初学者使用Python(3个月),并且使用wxPython进行noobie(1周)
我正在尝试使用wx.StaticBitmap
显示来自摄像机(1270x720)的图像。该GUI是使用wxFormBuilder
创建的,然后进行了修改以满足我的需要。这一切都要感谢这里的许多人。我已经完成了大部分该应用程序的工作并可以使用OpenCV进行工作,但是现在GUI变得比我以前要困难得多。
我终于可以显示图像了,但是当水平保持消失时,它看起来就像是旧电视。我在同一函数中使用cv2.imshow()
来表示图像有效并且显示良好。
初始化小部件的代码部分:
class fullFrame ( wx.Frame ):
def __init__(self,parent,id,iframe,**kwargs):
wx.Frame.__init__ ( self,id = wx.ID_ANY,title = wx.EmptyString,pos = wx.DefaultPosition,size = wx.Size( 1612,800 ),style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
## ** Updated SetSizeHintsSz to SetSizeHints
self.SetSizeHints( wx.DefaultSize,wx.DefaultSize )
fullSizer = wx.BoxSizer( wx.HORIZONTAL )
imgSizer = wx.BoxSizer( wx.VERTICAL )
self.pnl = wx.Panel( self,wx.ID_ANY,wx.DefaultPosition,wx.DefaultSize,wx.TAB_TRAVERSAL )
self.pnl.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_INFOBK ) )
self.pnl.SetMinSize( wx.Size( 1280,720 ) )
########### ** ###########
## Added image controls ##
########### ** ###########
self.Ready = False
self.iframe = iframe
self.imageSize = (1280,720)
self.vBox = wx.BoxSizer(wx.VERTICAL)
## ** Updated wx.EmptyImage to wx.Image
self.image = wx.Image(self.imageSize[0],self.imageSize[1])
## ** Updated wx.BitmapFromImage to wx.Bitmap
self.imageBit = wx.Bitmap(self.image)
self.staticBit = wx.StaticBitmap(self.pnl,self.imageBit)
self.vBox.Add(self.staticBit)
self.height,self.width = iframe.shape[:2]
self.bmp = wx.Bitmap.FromBuffer(self.height,self.width,iframe)
self.set_image()
self.Ready = True
########### ** ###########
## End image controls ##
########### ** ###########
imgSizer.Add( self.pnl,1,wx.EXPAND |wx.ALL,5 )
fullSizer.Add( imgSizer,wx.EXPAND,5 )
图像更新功能。
## ** Added function to diplay image
def set_image(self):
newframe = cv2.cvtColor(self.iframe,cv2.COLOR_BGR2RGB)
self.bmp.copyFromBuffer(newframe)
self.staticBit.SetBitmap(self.bmp)
self.Refresh()
cv2.imshow('Actual with OpenCV2',self.iframe)
此外,位图似乎仅占面板的一半,而完整图像则由OpenCV显示。我以为也许我的height和width变量颠倒了,但是当我尝试交换它们时,问题就变成了水平问题。无论哪种方式,它只能填充1280个像素中的720个。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)