質問するログイン新規登録

質問編集履歴

6

書式の改善

2017/12/07 06:58

投稿

shutein
shutein

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- openCVを使った画素探査と座標の保存
1
+ openCVを使った画素値取得その座標の保存方法
body CHANGED
File without changes

5

タイトルの改善

2017/12/07 06:58

投稿

shutein
shutein

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- openCVを使った画素探査と結果の利用
1
+ openCVを使った画素探査と座標保存
body CHANGED
File without changes

4

書式の改善

2017/12/07 05:27

投稿

shutein
shutein

スコア14

title CHANGED
File without changes
body CHANGED
@@ -19,30 +19,47 @@
19
19
  その後の処理が出来るかまでは判明しませんでした。
20
20
 
21
21
  ##
22
- (追加)
22
+ (追加
23
23
  私なりにやってみましたが、一定の画素値以上のみを取り出すことができず、
24
- 全部の座標保存されただけでした。
24
+ エラー発生てしまいました。
25
+ ```
26
+ 発生したエラー
25
27
 
28
+ E/AndroidRuntime: FATAL EXCEPTION: Thread-3
29
+ Process: com.example.janome.color2, PID: 6055
30
+ java.lang.UnsupportedOperationException: Mat data type is not compatible: 5
31
+ at org.opencv.core.Mat.get(Mat.java:1015)
32
+ at com.example.janome.color2.MainActivity.onCameraFrame(MainActivity.java:229)
33
+ at org.opencv.android.CameraBridgeViewBase$CvCameraViewListenerAdapter.onCameraFrame(CameraBridgeViewBase.java:163)
34
+ at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:399)
35
+ at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:352)
36
+ at java.lang.Thread.run(Thread.java:776)
37
+ ```
26
38
  もしかして
27
39
  mat.get(y,x)で画素値を取り出すことはできないのでしょうか。
28
40
 
29
41
  以下コードです。
30
42
  ```
31
- int r =0;
43
+ int r =0;
44
+ int o=0;
45
+ // double pix=0;
32
- // double [] data =new double[avem2.width()*avem2.height()];
46
+ double [] data =new double[avem2.width()*avem2.height()];
33
47
  double[][] data2 =new double[2][avem2.width()*avem2.height()];
34
- // avem2.get(0,0,data);
48
+ avem2.get(0,0,data);
35
49
 
36
50
  for(int y=0;y<avem2.height();y++) {
37
51
  for (int x = 0; x < avem2.width(); x++) {
38
52
 
39
53
  // avem2.get(y,x); //画素値にアクセス
40
-
54
+ // System.out.println("値は"+data[o]);
55
+ // pix=data[o];
56
+
41
- if( avem2.get(y,x)>0.98){
57
+ if(data[o]>0.98){
42
58
  data2[0][r]=x;
43
59
  data2[1][r]=y;
44
60
  // System.out.println(+(r+1)+"番目の座標が"+data2[0][r]+","+data2[1][r]);
45
61
  System.out.println("x座標は"+data2[0][r]+"y座標は"+data2[1][r]);
62
+ o++;
46
63
  r++;
47
64
  }
48
65
  }

3

内容の変更

2017/12/06 08:44

投稿

shutein
shutein

スコア14

title CHANGED
File without changes
body CHANGED
@@ -20,12 +20,17 @@
20
20
 
21
21
  ##
22
22
  (追加)
23
- 私なりにやってみましたが、「Attempt to write to null array」エラー出てしまいました。
23
+ 私なりにやってみましたが、一定の画素値以上のみを取り出すことができず、
24
+ 全部の座標が保存されただけでした。
25
+
26
+ もしかして
27
+ mat.get(y,x)で画素値を取り出すことはできないのでしょうか。
28
+
24
29
  以下コードです。
25
30
  ```
26
31
  int r =0;
32
+ // double [] data =new double[avem2.width()*avem2.height()];
27
- double [] data =new double[avem2.width()*avem2.height()];
33
+ double[][] data2 =new double[2][avem2.width()*avem2.height()];
28
- double[][] data2 =new double[2][];
29
34
  // avem2.get(0,0,data);
30
35
 
31
36
  for(int y=0;y<avem2.height();y++) {

2

書式の変更

2017/12/06 08:08

投稿

shutein
shutein

スコア14

title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,32 @@
18
18
  のようなforループを使えば出来るとは分かったものの
19
19
  その後の処理が出来るかまでは判明しませんでした。
20
20
 
21
+ ##
22
+ (追加)
23
+ 私なりにやってみましたが、「Attempt to write to null array」とエラーが出てしまいました。
24
+ 以下コードです。
25
+ ```
26
+ int r =0;
27
+ double [] data =new double[avem2.width()*avem2.height()];
28
+ double[][] data2 =new double[2][];
29
+ // avem2.get(0,0,data);
21
30
 
31
+ for(int y=0;y<avem2.height();y++) {
32
+ for (int x = 0; x < avem2.width(); x++) {
33
+
34
+ // avem2.get(y,x); //画素値にアクセス
35
+
36
+ if( avem2.get(y,x)>0.98){
37
+ data2[0][r]=x;
38
+ data2[1][r]=y;
39
+ // System.out.println(+(r+1)+"番目の座標が"+data2[0][r]+","+data2[1][r]);
40
+ System.out.println("x座標は"+data2[0][r]+"y座標は"+data2[1][r]);
41
+ r++;
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
22
47
  ###該当のソースコード
23
48
  ```Java
24
49
  private Mat m_temp; //抽出結果の画像
@@ -165,30 +190,7 @@
165
190
  }}
166
191
 
167
192
  ```
168
- ###試したこと(追加)
169
- 私なりにやってみましたが、「Attempt to write to null array」とエラーが出てしまいました。
170
- 以下コードです。
171
- ```
172
- int r =0;
173
- double [] data =new double[avem2.width()*avem2.height()];
174
- double[][] data2 =new double[2][];
175
- // avem2.get(0,0,data);
176
193
 
177
- for(int y=0;y<avem2.height();y++) {
178
- for (int x = 0; x < avem2.width(); x++) {
179
-
180
- // avem2.get(y,x); //画素値にアクセス
181
-
182
- if( avem2.get(y,x)>0.98){
183
- data2[0][r]=x;
184
- data2[1][r]=y;
185
- // System.out.println(+(r+1)+"番目の座標が"+data2[0][r]+","+data2[1][r]);
186
- System.out.println("x座標は"+data2[0][r]+"y座標は"+data2[1][r]);
187
- r++;
188
- }
189
- }
190
- }
191
- ```
192
194
  ###補足情報(言語/FW/ツール等のバージョンなど)
193
195
  androidstudio 2.3.1
194
196
  java

1

試したことを追加

2017/12/06 08:00

投稿

shutein
shutein

スコア14

title CHANGED
File without changes
body CHANGED
@@ -165,9 +165,30 @@
165
165
  }}
166
166
 
167
167
  ```
168
+ ###試したこと(追加)
169
+ 私なりにやってみましたが、「Attempt to write to null array」とエラーが出てしまいました。
170
+ 以下コードです。
171
+ ```
172
+ int r =0;
173
+ double [] data =new double[avem2.width()*avem2.height()];
174
+ double[][] data2 =new double[2][];
175
+ // avem2.get(0,0,data);
168
176
 
177
+ for(int y=0;y<avem2.height();y++) {
178
+ for (int x = 0; x < avem2.width(); x++) {
169
179
 
170
-
180
+ // avem2.get(y,x); //画素値にアクセス
181
+
182
+ if( avem2.get(y,x)>0.98){
183
+ data2[0][r]=x;
184
+ data2[1][r]=y;
185
+ // System.out.println(+(r+1)+"番目の座標が"+data2[0][r]+","+data2[1][r]);
186
+ System.out.println("x座標は"+data2[0][r]+"y座標は"+data2[1][r]);
187
+ r++;
188
+ }
189
+ }
190
+ }
191
+ ```
171
192
  ###補足情報(言語/FW/ツール等のバージョンなど)
172
193
  androidstudio 2.3.1
173
194
  java