質問編集履歴

3

書式変更

2016/08/02 09:36

投稿

ANUBIS
ANUBIS

スコア7

test CHANGED
File without changes
test CHANGED
@@ -116,6 +116,8 @@
116
116
 
117
117
  activity_main.xml
118
118
 
119
+ ```xml
120
+
119
121
  <?xml version="1.0" encoding="utf-8"?>
120
122
 
121
123
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -148,10 +150,14 @@
148
150
 
149
151
 
150
152
 
153
+ ```
154
+
151
155
 
152
156
 
153
157
  AndroidManifest.xml
154
158
 
159
+ ```xml
160
+
155
161
  <uses-permission android:name="android.permission.CAMERA" />
156
162
 
157
163
  <uses-feature android:name="android.hardware.camera"/>
@@ -160,9 +166,11 @@
160
166
 
161
167
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
162
168
 
163
-
169
+ ```
170
+
171
+
172
+
164
-
173
+ ```java
165
-
166
174
 
167
175
  MainActivity.java
168
176
 
@@ -403,3 +411,5 @@
403
411
  }
404
412
 
405
413
  }
414
+
415
+ ```

2

追記

2016/08/02 09:36

投稿

ANUBIS
ANUBIS

スコア7

test CHANGED
File without changes
test CHANGED
@@ -93,3 +93,313 @@
93
93
  どこのサイトでも同じようにやっている代入方法でプログラムが落ちるので、非常に困っています。
94
94
 
95
95
  原因がわかる方がいましたら、ご返答おねがいします。
96
+
97
+
98
+
99
+
100
+
101
+ 追記
102
+
103
+ 以下元々作っていたプログラムです。
104
+
105
+ 設定がどれに当たるかわからなかったので、手を加えたxmlの追加分のみとjava全文を記述しました。
106
+
107
+
108
+
109
+ OpenCVのデフォルトプログラムをベースにタップした際にカメラから得た画像を処理した画像を表示するプログラム
110
+
111
+
112
+
113
+ javaのonCreate内のコメントアウトしてある行を戻すと実行エラーが起きます。
114
+
115
+
116
+
117
+ activity_main.xml
118
+
119
+ <?xml version="1.0" encoding="utf-8"?>
120
+
121
+ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
122
+
123
+ xmlns:tools="http://schemas.android.com/tools"
124
+
125
+ android:layout_width="fill_parent"
126
+
127
+ android:layout_height="fill_parent"
128
+
129
+ android:orientation="vertical"
130
+
131
+ tools:context="com.example.bisfate.decood.MainActivity">
132
+
133
+
134
+
135
+ <org.opencv.android.JavaCameraView
136
+
137
+ android:id="@+id/camera_view"
138
+
139
+ android:layout_width="fill_parent"
140
+
141
+ android:layout_height="fill_parent"
142
+
143
+ android:visibility="visible" />
144
+
145
+
146
+
147
+ </RelativeLayout>
148
+
149
+
150
+
151
+
152
+
153
+ AndroidManifest.xml
154
+
155
+ <uses-permission android:name="android.permission.CAMERA" />
156
+
157
+ <uses-feature android:name="android.hardware.camera"/>
158
+
159
+ <uses-feature android:name="android.hardware.camera.autofocus"/>
160
+
161
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
162
+
163
+
164
+
165
+
166
+
167
+ MainActivity.java
168
+
169
+ package com.example.bisfate.decood;
170
+
171
+ import android.app.Activity;
172
+
173
+ import android.graphics.Bitmap;
174
+
175
+ import android.graphics.BitmapFactory;
176
+
177
+ import android.os.Bundle;
178
+
179
+ import android.util.Log;
180
+
181
+ import android.view.MotionEvent;
182
+
183
+ import org.opencv.android.BaseLoaderCallback;
184
+
185
+ import org.opencv.android.CameraBridgeViewBase;
186
+
187
+ import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
188
+
189
+ import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
190
+
191
+ import org.opencv.android.LoaderCallbackInterface;
192
+
193
+ import org.opencv.android.OpenCVLoader;
194
+
195
+ import org.opencv.core.CvType;
196
+
197
+ import org.opencv.core.Mat;
198
+
199
+ import org.opencv.imgproc.Imgproc;
200
+
201
+ public class MainActivity extends Activity implements CvCameraViewListener2 {
202
+
203
+ private CameraBridgeViewBase mCameraView;
204
+
205
+ private Mat mOutputFrame;//出力画像
206
+
207
+ private Mat mOutputFrame2;//画像保持用
208
+
209
+ private Mat mat;
210
+
211
+ private Mat tmpl;//テンプレート画像用Mat
212
+
213
+ private int touId=0;//フラグ変数
214
+
215
+ private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
216
+
217
+ private String TAG = "decood";
218
+
219
+ @Override
220
+
221
+ public void onManagerConnected(int status) {
222
+
223
+ switch (status) {
224
+
225
+ case LoaderCallbackInterface.SUCCESS:
226
+
227
+ Log.i(TAG, "OpenCV loaded successfully");
228
+
229
+ mCameraView.enableView();
230
+
231
+ break;
232
+
233
+ default:
234
+
235
+ super.onManagerConnected(status);
236
+
237
+ break;
238
+
239
+ }
240
+
241
+ }
242
+
243
+ };
244
+
245
+ @Override
246
+
247
+ protected void onCreate(Bundle savedInstanceState) {
248
+
249
+ super.onCreate(savedInstanceState);
250
+
251
+ Bitmap scr= BitmapFactory.decodeResource(getResources(),R.drawable.qrmark);//テンプレートJPG画像読み込み
252
+
253
+ // mat=new Mat();
254
+
255
+ // mat=new Mat(new Size(85, 85), CvType.CV_8UC4);
256
+
257
+ // tmpl= Utils.bitmapToMat(scr,mat);
258
+
259
+ setContentView(R.layout.activity_main);
260
+
261
+ mCameraView = (CameraBridgeViewBase)findViewById(R.id.camera_view);
262
+
263
+ mCameraView.setCvCameraViewListener(this);
264
+
265
+ }
266
+
267
+
268
+
269
+ @Override
270
+
271
+ public void onPause() {
272
+
273
+ if (mCameraView != null) {
274
+
275
+ mCameraView.disableView();
276
+
277
+ }
278
+
279
+ super.onPause();
280
+
281
+ }
282
+
283
+
284
+
285
+ @Override
286
+
287
+ protected void onResume() {
288
+
289
+ super.onResume();
290
+
291
+ OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_10, this, mLoaderCallback);
292
+
293
+ }
294
+
295
+
296
+
297
+ @Override
298
+
299
+ public void onDestroy() {
300
+
301
+ super.onDestroy();
302
+
303
+ if (mCameraView != null) {
304
+
305
+ mCameraView.disableView();
306
+
307
+ }
308
+
309
+ }
310
+
311
+
312
+
313
+ @Override
314
+
315
+ public void onCameraViewStarted(int width, int height) {
316
+
317
+ mOutputFrame = new Mat(height, width, CvType.CV_8UC1);
318
+
319
+ }
320
+
321
+
322
+
323
+ @Override
324
+
325
+ public void onCameraViewStopped() {
326
+
327
+ mOutputFrame.release();
328
+
329
+ }
330
+
331
+
332
+
333
+ @Override
334
+
335
+ public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
336
+
337
+ switch (touId){
338
+
339
+ case 0:
340
+
341
+ mOutputFrame=inputFrame.rgba();
342
+
343
+ break;
344
+
345
+ case 1:
346
+
347
+ Imgproc.threshold(inputFrame.gray(), mOutputFrame, 127.0, 255.0, Imgproc.THRESH_BINARY);//二値化
348
+
349
+ mOutputFrame2=mOutputFrame;
350
+
351
+ touId=2;
352
+
353
+ break;
354
+
355
+ case 2:
356
+
357
+ mOutputFrame=mOutputFrame2;
358
+
359
+ break;
360
+
361
+ }
362
+
363
+ return mOutputFrame;
364
+
365
+ }
366
+
367
+
368
+
369
+ @Override
370
+
371
+ public boolean onTouchEvent(MotionEvent ev) {
372
+
373
+ switch (ev.getAction()) {
374
+
375
+ case MotionEvent.ACTION_DOWN:
376
+
377
+ //画面がタッチされたときの動作
378
+
379
+ if(touId==0){
380
+
381
+ touId=1;
382
+
383
+ }
384
+
385
+ else if(touId==2){
386
+
387
+ touId=0;
388
+
389
+ }
390
+
391
+ break;
392
+
393
+ case MotionEvent.ACTION_CANCEL:
394
+
395
+ //他の要因によってタッチがキャンセルされたときの動作
396
+
397
+ break;
398
+
399
+ }
400
+
401
+ return super.onTouchEvent(ev);
402
+
403
+ }
404
+
405
+ }

1

追記

2016/08/02 09:22

投稿

ANUBIS
ANUBIS

スコア7

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,12 @@
3
3
  タイトル通り、Mat形式の変数にnew Mat()などのデータを代入すると実行エラーが発生し、プログラムが強制終了されてしまいます。
4
4
 
5
5
  ただ、inputFrameを代入する場合は実行エラーは発生しません。
6
+
7
+
8
+
9
+ 導入については
10
+
11
+ Fairu>New>Improt ModuleでOpenCVのJavaフォルダ選択して読み込み、OpenCVのbuild.gradleのcompileSdkVersionを24に変更しました。
6
12
 
7
13
 
8
14