逛b站又看到了badapple。。。。。先做个简化版的玩一下,哈哈。
from tkinter import *
from tkinter.ttk import Scrollbar
import time
import cv2
import tkinter.font as tkFont
theme_color = {
'Default': '#000000.#FFFFFF',
'Greygarious': '#83406A.#D1D4D1',
'Aquamarine': '#5B8340.#D1E7E0',
'Bold Beige': '#4B4620.#FFF0E1',
'Cobalt Blue': '#ffffBB.#3333aa',
'Olive Green': '#D1E7E0.#5B8340',
'Night Mode': '#FFFFFF.#000000',
}
cap = cv2.VideoCapture('40689-1-208.mp4')#打开相机
class EditorPlus(Tk):
def __init__(self):
super().__init__()
self._set_window_()
self._create_menu_bar_()
self._create_body_()
# 设置初始窗口的属性
def _set_window_(self):
self.title("EditorPlus")
self.geometry('600x700')
# 创建整个菜单栏
def _create_menu_bar_(self):
menu_bar = Menu(self)
# 创建文件的联级菜单
file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label='新建', accelerator='Ctrl+N')
file_menu.add_command(label='打开', accelerator='Ctrl+O')
file_menu.add_command(label='保存', accelerator='Ctrl+S')
file_menu.add_command(label='另存为', accelerator='Shift+Ctrl+S')
file_menu.add_separator()
file_menu.add_command(label='退出', accelerator='Alt+F4')
# 在菜单栏上添加菜单标签,并将该标签与相应的联级菜单关联起来
menu_bar.add_cascade(label='文件', menu=file_menu)
# 创建编辑的联级菜单
edit_menu = Menu(menu_bar, tearoff=0)
edit_menu.add_command(label='撤销', accelerator='Ctrl+Z')
edit_menu.add_command(label='恢复', accelerator='Ctrl+Y')
edit_menu.add_separator()
edit_menu.add_command(label='剪切', accelerator='Ctrl+X')
edit_menu.add_command(label='复制', accelerator='Ctrl+C')
edit_menu.add_command(label='粘贴', accelerator='Ctrl+V')
edit_menu.add_separator()
edit_menu.add_command(label='查找', accelerator='Ctrl+F')
edit_menu.add_separator()
edit_menu.add_command(label='全选', accelerator='Ctrl+A')
menu_bar.add_cascade(label='编辑', menu=edit_menu)
# 视图菜单
view_menu = Menu(menu_bar, tearoff=0)
show_line_number = IntVar()
show_line_number.set(1)
view_menu.add_checkbutton(label='显示行号', variable=show_line_number)
highlight_line = IntVar()
view_menu.add_checkbutton(label='高亮当前行', onvalue=1, offvalue=0, variable=highlight_line)
# 在主题菜单中再添加一个子菜单列表
themes_menu = Menu(menu_bar, tearoff=0)
view_menu.add_cascade(label='主题', menu=themes_menu)
theme_choice = StringVar()
theme_choice.set('Default')
for k in sorted(theme_color):
themes_menu.add_radiobutton(label=k, variable=theme_choice)
menu_bar.add_cascade(label='视图', menu=view_menu)
about_menu = Menu(menu_bar, tearoff=0)
about_menu.add_command(label='关于')
about_menu.add_command(label='帮助')
menu_bar.add_cascade(label='关于', menu=about_menu)
self["menu"] = menu_bar
# 创建程序主体
def _create_body_(self):
# 创建文本输入框
self.ft = tkFont.Font(family="times", size=3, weight=tkFont.NORMAL)
content_text = Text(self, wrap='word',font = self.ft)
content_text.pack(expand='yes', fill='both')
while(True):
content_text.delete('1.0','end')
ret,frame = cap.read()#捕获一帧图像
# #判断按键,如果按键为q,退出循环
# if cv2.waitKey(1) & 0xFF == ord('q'):
# break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.resize(gray,(80,60))
cv2.imshow('frame',gray)
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
pic_text = ''
[rows, cols] = binary.shape
for i in range(rows - 1):
for j in range(cols-1):
#print(binary[j, i])
if binary[i, j]>200:
pic_text = pic_text + '1'
else:
pic_text = pic_text + ' '
pic_text = pic_text+'\n'
content_text.insert(INSERT,pic_text)
content_text.update()
cv2.waitKey(1)
cap.release()#关闭相机
if "__main__" == __name__:
app = EditorPlus()
app.mainloop()