【发布时间】:2014-04-01 23:11:20
【问题描述】:
我在 python 中创建了两个模块。其中一个模块用于使用 Tkinter 创建 GUI,第二个模块用于捕获和存储图像。当我在 Tkinter 模块中调用 opencv 模块时,它首先运行 opencv 模块,释放相机后,它正在运行 Tkinter 模块。所以我使用了子进程。弹出()。现在我想将子进程输出到 Tkinter 模块中。使用Tkinter创建GUI的代码如下。
import sys
from Tkinter import *
import Tkinter
import subprocess
def capcam():
command="python2 imacap.py"
subprocess.Popen(command,shell=True)
root=Tk()
add=Frame(root)
add.grid()
root.title("Test")
capcam()
button_height=11
button_width=29
button_ipadx=2
button_ipady=2
text_box = Entry(add,justify=RIGHT,width=100, font=100)
text_box.grid(row = 0, column = 1,columnspan = 5)
text_box.insert(0, "0")
bttn_3 = Button(add, height= button_height ,width= button_width,text = "3")
bttn_3.grid(row = 3, column = 2, padx=button_ipadx, pady=button_ipady)
以下是子进程的代码。
import cv2.cv as cv
capture = cv.CaptureFromCAM(0)
num = 0
while True:
img = cv.QueryFrame(capture)
cv.SaveImage('pic'+str(num)+'.jpg', img)
if num == 500:
del(capture)
break
if cv.WaitKey(10) == 27:
break
num += 1
我想要主进程中运行时 num 变量的值,并希望将其传递给条目而不终止子进程。
【问题讨论】:
-
这里不需要子进程。您可以使用
threading或multiprocessing运行来自imacap模块的代码。
标签: opencv python-2.7 tkinter subprocess