質問編集履歴

5

修正

2019/11/25 04:45

投稿

nggn64
nggn64

スコア9

test CHANGED
@@ -1 +1 @@
1
- カメラ画像の座標キャリブレーションをしたい
1
+ カメラ画像の座標キャリブレーション
test CHANGED
@@ -8,17 +8,11 @@
8
8
 
9
9
  ### イメージ図
10
10
 
11
- ![イメージ説明](4c2e0abbbe6629b80e14146683dd6594.png)
12
-
13
- (1)プロジェクター投影範囲(赤い部分)をスクリーンに投影
11
+ (1)プロジェクター投影範囲をスクリーンに投影
14
12
 
15
13
  (2)(1)をカメラで撮って画像処理をしてプロジェクター投影範囲の輪郭だけ取り出す
16
14
 
17
15
  (3)その輪郭をカメラ座標とぴったり合うように補正する。*実行ウィンドウ上で行う
18
-
19
-
20
-
21
- リアルタイムで画像処理をして輪郭を抽出してその輪郭の四隅を動かしたいがその方法が分からないです。
22
16
 
23
17
 
24
18
 

4

修正

2019/11/25 04:44

投稿

nggn64
nggn64

スコア9

test CHANGED
File without changes
test CHANGED
@@ -8,13 +8,13 @@
8
8
 
9
9
  ### イメージ図
10
10
 
11
- ![イメージ説明](bee41144be5f62c0ae9db52a66822c2f.png)
11
+ ![イメージ説明](4c2e0abbbe6629b80e14146683dd6594.png)
12
12
 
13
13
  (1)プロジェクター投影範囲(赤い部分)をスクリーンに投影
14
14
 
15
15
  (2)(1)をカメラで撮って画像処理をしてプロジェクター投影範囲の輪郭だけ取り出す
16
16
 
17
- (3)その輪郭をカメラ座標とぴったり合うように補正する
17
+ (3)その輪郭をカメラ座標とぴったり合うように補正する。*実行ウィンドウ上で行う
18
18
 
19
19
 
20
20
 

3

修正

2019/11/25 03:24

投稿

nggn64
nggn64

スコア9

test CHANGED
File without changes
test CHANGED
@@ -8,11 +8,17 @@
8
8
 
9
9
  ### イメージ図
10
10
 
11
- ![![イメージ説明](b6bbc12c3800b5e443ffc8f2305b4a66.png)]
11
+ ![イメージ説明](bee41144be5f62c0ae9db52a66822c2f.png)
12
12
 
13
- ・カメラで撮ったプロジェクター投影範囲の輪郭(赤い)をスクリーンに映し出している(一つのウィンドウの中に輪郭だけが表示されている状態。背景は図と同様に白色)。
13
+ (1)プロジェクター投影範囲(赤い部分)をスクリーンに投影
14
14
 
15
+ (2)(1)をカメラで撮って画像処理をしてプロジェクター投影範囲の輪郭だけ取り出す
16
+
15
- れを何かアドオン使って右の図のようにカメラ画像重なるように補正する
17
+ (3)その輪郭をカメラ座標ぴったり合うように補正する
18
+
19
+
20
+
21
+ リアルタイムで画像処理をして輪郭を抽出してその輪郭の四隅を動かしたいがその方法が分からないです。
16
22
 
17
23
 
18
24
 

2

再投稿

2019/11/25 03:13

投稿

nggn64
nggn64

スコア9

test CHANGED
@@ -1 +1 @@
1
- マッピング、座標変換
1
+ カメラ画像の座標キャリブレーションをしたい
test CHANGED
@@ -1,3 +1,31 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- ウェブカメラで撮影し画像をofxBezierWarpManagerを使っ変形させプロジェクタ投影したい。
3
+ ウェブカメラで撮影し画像処理施し得られたプロジェクタ投影範囲の輪郭をキャリブレーションを行うことでカメラ画像と重ね合わせるということをしたい。
4
+
5
+ OpenFrameworks 0.10.1を使用。
6
+
7
+
8
+
9
+ ### イメージ図
10
+
11
+ ![![イメージ説明](b6bbc12c3800b5e443ffc8f2305b4a66.png)]
12
+
13
+ ・カメラで撮ったプロジェクター投影範囲の輪郭(赤い枠)をスクリーンに映し出している(一つのウィンドウの中に輪郭だけが表示されている状態。背景は図と同様に白色)。
14
+
15
+ ・それを何かのアドオンを使って右の図のようにカメラ画像と重なるように補正する。
16
+
17
+
18
+
19
+ ### 試したこと
20
+
21
+
22
+
23
+ 補正のためにofxBezierWarpManagerというアドオンを使ってみたがうまくいかなかった。ofxQuadWarpも使おうとしたが、エラーばかりでダメだった。
24
+
25
+
26
+
27
+ ### 補足情報(FW/ツールのバージョンなど)
28
+
29
+
30
+
31
+ OpenFrameworks 0.10.1を使用。

1

修正

2019/11/25 02:04

投稿

nggn64
nggn64

スコア9

test CHANGED
@@ -1 +1 @@
1
- ofxBezierWarpManagerのビデオ画像の出力方法について(マッピング、座標変換)
1
+ マッピング、座標変換
test CHANGED
@@ -1,363 +1,3 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  ウェブカメラで撮影した画像をofxBezierWarpManagerを使って変形させプロジェクタに投影したい。
4
-
5
- [このような感じで](http://mizutanikirin.net/openframeworks-ofxbezierwarpmanager-test)動かしたい。
6
-
7
-
8
-
9
- ### 発生している問題・エラーメッセージ
10
-
11
- 以下のようにリアルタイムでウェブカメラの画像を撮ると格子の隙間からしか画像が見えない。
12
-
13
- (マウスが映っているのが辛うじて分かる)
14
-
15
- ![イメージ説明](a1c59338aeaa3e8a408be1f9db469dcc.png)
16
-
17
-
18
-
19
-
20
-
21
- ### 参考にしたソースコード
22
-
23
- [参考にしたソースコード](https://github.com/TsubokuLab/ofxBezierWarpManager)
24
-
25
-
26
-
27
- main.cpp
28
-
29
- ```C++
30
-
31
- #include "ofMain.h"
32
-
33
- #include "ofApp.h"
34
-
35
-
36
-
37
- //========================================================================
38
-
39
- int main( ){
40
-
41
- ofSetupOpenGL(1920, 1080, OF_WINDOW); // <-------- setup the GL context
42
-
43
-
44
-
45
- // this kicks off the running of my app
46
-
47
- // can be OF_WINDOW or OF_FULLSCREEN
48
-
49
- // pass in width and height too:
50
-
51
- ofRunApp(new ofApp());
52
-
53
-
54
-
55
- }
56
-
57
- ```
58
-
59
- ofApp.cpp
60
-
61
- ```C++
62
-
63
- #include "ofApp.h"
64
-
65
-
66
-
67
- //--------------------------------------------------------------
68
-
69
- void ofApp::setup() {
70
-
71
- // source movie
72
-
73
- _mov.initGrabber(640, 360);
74
-
75
-
76
-
77
- first_fbo.allocate(1920, 1080);
78
-
79
- second_fbo.allocate(1920, 1080);
80
-
81
- third_fbo.allocate(1920, 1080);
82
-
83
- fourth_fbo.allocate(1920, 1080);
84
-
85
-
86
-
87
- bezManager.setup(10); //WarpResolution
88
-
89
- bezManager.addFbo(&first_fbo);
90
-
91
- bezManager.addFbo(&second_fbo);
92
-
93
- bezManager.addFbo(&third_fbo);
94
-
95
- bezManager.addFbo(&fourth_fbo);
96
-
97
-
98
-
99
- bezManager.loadSettings();
100
-
101
- }
102
-
103
-
104
-
105
- //--------------------------------------------------------------
106
-
107
- void ofApp::update() {
108
-
109
- // movie update
110
-
111
- _mov.update();
112
-
113
- }
114
-
115
-
116
-
117
- //--------------------------------------------------------------
118
-
119
- void ofApp::draw() {
120
-
121
- ofClear(0);
122
-
123
-
124
-
125
- // update fbo //////////////////////
126
-
127
- first_fbo.begin();
128
-
129
- _mov.draw(0, 0, 1920, 1080);
130
-
131
- first_fbo.end();
132
-
133
-
134
-
135
- second_fbo.begin();
136
-
137
- _mov.draw(0, 0, 1920, 1080);
138
-
139
- second_fbo.end();
140
-
141
-
142
-
143
- third_fbo.begin();
144
-
145
- _mov.draw(0, 0, 1920, 1080);
146
-
147
- third_fbo.end();
148
-
149
-
150
-
151
- fourth_fbo.begin();
152
-
153
- _mov.draw(0, 0, 1920, 1080);
154
-
155
- fourth_fbo.end();
156
-
157
- /////////////////////////////////////
158
-
159
-
160
-
161
- // draw bezier
162
-
163
- bezManager.draw();
164
-
165
-
166
-
167
- string _help = "[ENTER] key : Toggle guide visible.\n";
168
-
169
- _help += "[S] key : Save settings.\n";
170
-
171
- _help += "[L] key : Load settings.\n";
172
-
173
- _help += "Left drag the control point : Move Corners/Anchors.\n";
174
-
175
- _help += "Right click the control point : Toggle bezier/homoglaphy mode.\n";
176
-
177
- _help += "Arrow key : Move Corners/Anchors. (selected control point)\n";
178
-
179
- ofDrawBitmapString(_help, 10, 20);
180
-
181
- }
182
-
183
-
184
-
185
- //--------------------------------------------------------------
186
-
187
- void ofApp::keyPressed(int key) {
188
-
189
- // send key event
190
-
191
- bezManager.keyPressed(key);
192
-
193
-
194
-
195
- // show / hide guide
196
-
197
- if (key == OF_KEY_RETURN) {
198
-
199
- bezManager.toggleGuideVisible();
200
-
201
- }
202
-
203
- // save settings
204
-
205
- if (key == 's') {
206
-
207
- bezManager.saveSettings();
208
-
209
- }
210
-
211
- // load settings
212
-
213
- if (key == 'l') {
214
-
215
- bezManager.loadSettings();
216
-
217
- }
218
-
219
- }
220
-
221
-
222
-
223
- //--------------------------------------------------------------
224
-
225
- void ofApp::keyReleased(int key) {
226
-
227
-
228
-
229
- }
230
-
231
-
232
-
233
- //--------------------------------------------------------------
234
-
235
- void ofApp::mouseMoved(int x, int y) {
236
-
237
-
238
-
239
- }
240
-
241
-
242
-
243
- //--------------------------------------------------------------
244
-
245
- void ofApp::mouseDragged(int x, int y, int button) {
246
-
247
- // send drag event
248
-
249
- bezManager.mouseDragged(x, y, button);
250
-
251
- }
252
-
253
-
254
-
255
- //--------------------------------------------------------------
256
-
257
- void ofApp::mousePressed(int x, int y, int button) {
258
-
259
- // send press event
260
-
261
- bezManager.mousePressed(x, y, button);
262
-
263
- }
264
-
265
-
266
-
267
- ```
268
-
269
-
270
-
271
- ofApp.h
272
-
273
- ```C++
274
-
275
- #pragma once
276
-
277
-
278
-
279
- #include "ofMain.h"
280
-
281
-
282
-
283
- #include "ofxBezierWarpManager.h"
284
-
285
-
286
-
287
- class ofApp : public ofBaseApp{
288
-
289
-
290
-
291
- public:
292
-
293
- void setup();
294
-
295
- void update();
296
-
297
- void draw();
298
-
299
-
300
-
301
- void keyPressed(int key);
302
-
303
- void keyReleased(int key);
304
-
305
- void mouseMoved(int x, int y);
306
-
307
- void mouseDragged(int x, int y, int button);
308
-
309
- void mousePressed(int x, int y, int button);
310
-
311
- void mouseReleased(int x, int y, int button);
312
-
313
- void windowResized(int w, int h);
314
-
315
- void dragEvent(ofDragInfo dragInfo);
316
-
317
- void gotMessage(ofMessage msg);
318
-
319
-
320
-
321
- ofxBezierWarpManager bezManager;
322
-
323
-
324
-
325
- // 描画したいFBO
326
-
327
- ofFbo first_fbo;
328
-
329
- ofFbo second_fbo;
330
-
331
- ofFbo third_fbo;
332
-
333
- ofFbo fourth_fbo;
334
-
335
-
336
-
337
- bool showGuide;
338
-
339
-
340
-
341
- // 描画する映像の代わり
342
-
343
- ofVideoGrabber _mov;
344
-
345
- };
346
-
347
- ```
348
-
349
-
350
-
351
- ### 試したこと
352
-
353
- ofApp.hのofVideoGrabber _mov;ははもともとカメラから入力した映像を入れたかったのでofVideoGrabber vidGrabber;を用意してそれを使っていました。
354
-
355
-
356
-
357
- ### 補足情報(FW/ツールのバージョンなど)
358
-
359
- visual studio 2017使用
360
-
361
- openframeworks0.10.1使用 アドオンはofxXmlSettingsとofxBezierWarpManagerを使用
362
-
363
- ofBox2DやofxOpencvなども使っています