回答編集履歴
4
markdown
test
CHANGED
@@ -8,7 +8,11 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
## 動作が遅い問題の軽減策
|
12
|
+
|
13
|
+
|
14
|
+
|
11
|
-
|
15
|
+
一時的な問題回避策)
|
12
16
|
|
13
17
|
- `canvas1.delete("all")` 画像オブジェクトが蓄積されてるので、毎回クリアする
|
14
18
|
|
@@ -24,9 +28,9 @@
|
|
24
28
|
|
25
29
|
|
26
30
|
|
31
|
+
## 動作が遅い原因
|
27
32
|
|
28
33
|
|
29
|
-
動作が遅い原因
|
30
34
|
|
31
35
|
tkinter のタイマー内で処理する場合、
|
32
36
|
|
@@ -38,7 +42,13 @@
|
|
38
42
|
|
39
43
|
|
40
44
|
|
45
|
+
## 解決策
|
46
|
+
|
47
|
+
|
48
|
+
|
41
|
-
|
49
|
+
カメラ側の処理にはスレッドを使ってください。
|
50
|
+
|
51
|
+
|
42
52
|
|
43
53
|
GUI更新は mainloop が動いているスレッドで行う必要があるので、
|
44
54
|
|
@@ -46,11 +56,13 @@
|
|
46
56
|
|
47
57
|
|
48
58
|
|
59
|
+
|
60
|
+
|
49
61
|
注意点: 別スレッドからはGUIを直接操作しない事。スレッドセーフではありません。
|
50
62
|
|
51
|
-
Image.fromarray 迄はサブスレッド側、
|
63
|
+
- Image.fromarray 迄はサブスレッド側、
|
52
64
|
|
53
|
-
ImageTk.PhotoImage はメインスレッド側で行うようにします。
|
65
|
+
- ImageTk.PhotoImage はメインスレッド側で行うようにします。
|
54
66
|
|
55
67
|
|
56
68
|
|
@@ -59,6 +71,8 @@
|
|
59
71
|
一時的な遅延になるので、理想的には別スレッドで行った方が良いです。
|
60
72
|
|
61
73
|
|
74
|
+
|
75
|
+
----
|
62
76
|
|
63
77
|
追記:
|
64
78
|
|
@@ -76,19 +90,9 @@
|
|
76
90
|
|
77
91
|
|
78
92
|
|
79
|
-
|
80
|
-
|
81
|
-
終了時のエラーについては
|
82
|
-
|
83
|
-
- `cv2.VideoCapture(1, cv2.CAP_DSHOW)`
|
84
|
-
|
85
|
-
- mainloop の後に `c.release()`
|
86
|
-
|
87
|
-
|
88
|
-
|
89
93
|
----
|
90
94
|
|
91
|
-
他の問題点
|
95
|
+
## 他の問題点
|
92
96
|
|
93
97
|
|
94
98
|
|
@@ -99,3 +103,15 @@
|
|
99
103
|
Tk() は tkinter を使う際の初期化処理も含む為、
|
100
104
|
|
101
105
|
複数回呼び出すのは、他で問題の原因になる事が多いです。
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
----
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
終了時のエラーについては
|
114
|
+
|
115
|
+
- `cv2.VideoCapture(1, cv2.CAP_DSHOW)`
|
116
|
+
|
117
|
+
- mainloop の後に `c.release()`
|
3
マルチプロセススについて追記
test
CHANGED
@@ -60,6 +60,22 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
+
追記:
|
64
|
+
|
65
|
+
もし、読み込んだ画像に対して解析など何か処理を行うのであれば、
|
66
|
+
|
67
|
+
マルチプロセスで行う方が適切です。
|
68
|
+
|
69
|
+
但し、データの受け渡し・共有方法はプロセス間通信が必要で、
|
70
|
+
|
71
|
+
スレッドの場合と異なります。
|
72
|
+
|
73
|
+
マルチスレッドでは、GUIの負担軽減である程度の効果は見込めますが、
|
74
|
+
|
75
|
+
コア数を活かした最適化にはなりません。
|
76
|
+
|
77
|
+
|
78
|
+
|
63
79
|
|
64
80
|
|
65
81
|
終了時のエラーについては
|
2
tk.Tk() について補足
test
CHANGED
@@ -67,3 +67,19 @@
|
|
67
67
|
- `cv2.VideoCapture(1, cv2.CAP_DSHOW)`
|
68
68
|
|
69
69
|
- mainloop の後に `c.release()`
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
----
|
74
|
+
|
75
|
+
他の問題点
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
2回目の root2=tk.Tk() について
|
80
|
+
|
81
|
+
複数のウインドウを作りたい場合は tk.Toplevel() を使ってください。
|
82
|
+
|
83
|
+
Tk() は tkinter を使う際の初期化処理も含む為、
|
84
|
+
|
85
|
+
複数回呼び出すのは、他で問題の原因になる事が多いです。
|
1
文章の修正
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
動作が遅い問題の軽減策:
|
11
|
+
動作が遅い問題の軽減策(一時的な問題回避策):
|
12
12
|
|
13
13
|
- `canvas1.delete("all")` 画像オブジェクトが蓄積されてるので、毎回クリアする
|
14
14
|
|