我已经使用Python和Opencv2完成了一个程序。现在,我想在我的程序中添加一个GUI窗口。
我对PyGtk3有一些经验。所以,我修改了我的代码以采用PyGtk3。但是,我得到了错误。所以,我尝试了一个简单的程序来找出实际的错误。
我的测试代码是,
import pygtk
pygtk.require('2.0')
import gtk
import numpy as np
import cv2
builder = gtk.Builder()
builder.add_from_file("GUI.glade")
window = builder.get_object("window1")
window.set_title("Single Object Tracking")
window.connect("delete-event", gtk.main_quit)
window.show_all()
img = cv2.imread('Birds.jpg')
cv2.imwrite('abcdefgh.png',img)
cv2.imshow('image',img)
cv2.waitKey(10000)
cv2.destroyAllWindows()
gtk.main()
实际上,程序没有显示任何编译时错误。但是在执行此程序后,当流程到达代码cv2.imshow('image',img)
程序时会自动终止。
如果我发表评论cv2.imshow('image',img")
,则只表示此程序正常运行。但是,我需要插入代码cv2.imshow('image',img)
。
你能帮我解决一下这个问题吗?
提前谢谢......
更新
我试过Tkinter。我能够显示图像但无法显示视频。我的测试代码是
import numpy as np
import cv2
import Tkinter
top = Tkinter.Tk()
top.mainloop()
cam = cv2.VideoCapture('dove1.mp4')
# Structuring element
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9,4))
t_minus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
i = 1
while True:
flag,frame = cam.read()
rgb_image = frame
if(flag==False):
break
print i
i = i + 1
cv2.imshow('RGB Image',frame);
实际上,我想为我的程序添加一个GUI窗口。我正在处理输入视频文件并显示其输出视频的4个级别。它完成了。 GUI是个问题。有人可以帮我解决我的问题吗?