質問編集履歴

1

2019/11/01 05:07

投稿

popokobe
popokobe

スコア6

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,115 @@
11
11
  しかし僕が実現したいのは、カメラで撮影したものをまずはフレーム内に表示させ、そこで保存orキャンセルといった条件分岐をさせ、保存ならば指定したフォルダに保存、キャンセルならもう一度撮影画面に戻るといったものです。
12
12
 
13
13
  詰まっているのは、画像を保存せずにフレームに表示させるといった箇所です。その部分だけでいいので、お力添えお願いいたします。
14
+
15
+
16
+
17
+
18
+
19
+ 以下コードの一部抜粋です。よろしくお願いします。
20
+
21
+
22
+
23
+ ```Python
24
+
25
+ # 撮影開始
26
+
27
+ def capture_start(device_num, dir_path, basename, ext="jpg", delay=1, window_name="frame"):
28
+
29
+ cap = cv2.VideoCapture(device_num)
30
+
31
+
32
+
33
+ if not cap.isOpened():
34
+
35
+ return
36
+
37
+
38
+
39
+ os.makedirs(dir_path, exist_ok=True)
40
+
41
+ base_path = os.path.join(dir_path, basename)
42
+
43
+
44
+
45
+ n = 0
46
+
47
+ while True:
48
+
49
+ ret, frame = cap.read()
50
+
51
+ cv2.imshow(window_name, frame)
52
+
53
+ key = cv2.waitKey(delay) & 0xFF
54
+
55
+ if key == ord('q'):
56
+
57
+ break
58
+
59
+ if key == ord('s'):
60
+
61
+ path = '{}_{}.{}'.format(base_path, "%03.f"%(n), ext)
62
+
63
+ cv2.imwrite(path, frame)
64
+
65
+ convert.convert(path)
66
+
67
+ n += 1
68
+
69
+
70
+
71
+ cv2.destroyWindow(window_name)
72
+
73
+
74
+
75
+ # --------------------------撮影ページ---------------------------------
76
+
77
+ # 撮影ページのフレームを作成
78
+
79
+ capturePage = tk.Frame(root)
80
+
81
+ # 撮影画面
82
+
83
+ label = tk.Label(capturePage, text="【撮影画面】", height=2)
84
+
85
+ label.pack(fill="x")
86
+
87
+
88
+
89
+ # 撮影ボタン
90
+
91
+ button_capture = tk.Button(capturePage, text="撮影", width=30, height=10, command=lambda: capture_start(0, "./captured/" + entry_scan_date.get(), entry_scan_date.get() + entry_customer.get()))
92
+
93
+ button_capture.pack()
94
+
95
+
96
+
97
+ # 説明
98
+
99
+ label = tk.Label(capturePage, text="まずは撮影ボタンを押してください")
100
+
101
+ label.pack()
102
+
103
+ label = tk.Label(capturePage, text="sを押すと撮影")
104
+
105
+ label.pack()
106
+
107
+ label = tk.Label(capturePage, text="qを押すと終了")
108
+
109
+ label.pack()
110
+
111
+
112
+
113
+ # 戻るボタン
114
+
115
+ button_back = tk.Button(capturePage, text="戻る", command=lambda : change_page(startPage))
116
+
117
+ button_back.pack()
118
+
119
+
120
+
121
+ # 撮影ページを配置
122
+
123
+ capturePage.grid(row=0, column=0, sticky="nsew")
124
+
125
+ ```