ref
,
frame
=
cap
.
read
(
)
frame
=
cv2
.
flip
(
frame
,
1
)
cvimage
=
cv2
.
cvtColor
(
frame
,
cv2
.
COLOR_BGR2RGBA
)
pilImage
=
Image
.
fromarray
(
cvimage
)
pilImage
=
pilImage
.
resize
(
(
image_width
,
image_height
)
,
Image
.
ANTIALIAS
)
tkImage
=
ImageTk
.
PhotoImage
(
image
=
pilImage
)
return
tkImage
top
=
tk
.
Tk
(
)
top
.
title
(
'视频窗口'
)
top
.
geometry
(
'900x600'
)
image_width
=
600
image_height
=
500
canvas
=
Canvas
(
top
,
bg
=
'white'
,
width
=
image_width
,
height
=
image_height
)
Label
(
top
,
text
=
'这是一个视频!'
,
font
=
(
"黑体"
,
14
)
,
width
=
15
,
height
=
1
)
.
place
(
x
=
400
,
y
=
20
,
anchor
=
'nw'
)
canvas
.
place
(
x
=
150
,
y
=
50
)
while
True
:
try
:
pic
=
tkImage
(
)
canvas
.
create_image
(
0
,
0
,
anchor
=
'nw'
,
image
=
pic
)
top
.
update
(
)
top
.
after
(
1
)
except
:
cap
.
release
(
)
top
.
mainloop
(
)
此工具是基于VB的一个插件,可以输出
python
的tk代码
这是一个VB6的ADDIN(外接程序),用于使用VB6开发工具直接拖放控件,直接可视化完成
Python
的
TKinter
的GUI布局和设计,可以在VB
界面
上设置
控件的一些属性,最终自动生成必要的代码(包括回调函数框架),代码生成后仅需要在对应的回调函数中增加相应的逻辑功能代码即可。
这个工具支持绝大部分TKiner控件,可应付一般GUI的需求。(列表参见下面的控件说明)。
下面这张就是实现的整体
界面
的示意图基本功能介绍:点击按键nextvideo会在下面的
界面
播放
视频
视频
播放完成后在预测语句后的文本框中出现对该
视频
的语义描述点击按键标注语句可以在其后的文本框中展示对该
视频
的标注语句这篇文章涉及的知识点还是挺多的哦:
Tkinter
基本控件实现
TKinter
控件属性优化
Tkinter
实现
视频
播放Threading模块实现多线程编程1.0导入包、创建
界面
类1.1设置窗口标题、
界面
最大化具体的函数如下所示,先获得当前屏幕的大小,然后设置窗口大小。在__init__初始化中调用即可。1.2实现各个控件布局1)布局方式介绍布局就是控制各个控件在整个
界面
中的位置,Tkinte
1.选择
视频
文件
from
tkinter
.filedialog import askdirectory,askopenfilename
from
tkinter
import *
def selectPath():
path_ = askopenfilename()
path.set(path_)
root = Tk()
path = StringVar()
Label(root,text = "目标路径:").grid(row = 0, column = 0)
Entry(root,
import
tkinter
as tk
from
tkinter
import filedialog#文件控件
from PIL import Image, ImageTk#图像控件
import threading#多线程
#---------------创建窗口
window = tk.Tk()
window.tit...
由于
tkinter
没有直接提供居中
显示
的api,因此,要想将tk的对话框居中
显示
,需要用到tk自带的设定位置的方法geometry()
nScreenWid, nScreenHei = tkLogin.maxsize()
nCurWid = tkLogin.winfo_reqwidth()
nCurHeight = tkLogin.winfo_reqheight()
tkLogin.geometry({}x{}+{}+{}.format(nCurWid, nCurHeight, nScreenWid/2 - nCurWid/2, nScreenHei/2 - nCurHeight/2))
0 写在前面
这篇博客主要参考资料为《OpenCV 3计算机视觉
Python
语言实现》(Learning OpenCV 3 Computer Vison with
Python
)。
因为之前用Faster R-CNN做过一个红绿灯检测的小实践,但是Github提供的demo的输入只是几幅测试图片,而且
显示
用的matplotlib库,每个窗口必须手动关闭后才能
显示
下一个窗口,交互体验不好。
# 导入一些包
# opencv2 是 三方库 需要 pip install
python
-opencv
video_path = './welcome.wmv' #
视频
的路径
win ...
# 将OpenCV图像转换为PIL图像
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
image = Image.fromarray(image)
# 将PIL图像转换为ImageTk格式,以便在
tkinter
中
显示
photo = ImageTk.PhotoImage(image)
label.config(image=photo)
label.image = photo
# 每隔10毫秒更新一次画面
root.after(10, show_frame)
# 启动循环
显示
画面
show_frame()
# 启动
tkinter
窗口
root.mainloop()
# 释放
摄像头
资源
cap.release()
希望能对您有所帮助!