質問編集履歴
6
書式の改善
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
openCVを使った画素
|
1
|
+
openCVを使った画素値取得とその座標の保存方法
|
body
CHANGED
File without changes
|
5
タイトルの改善
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
openCVを使った
|
1
|
+
openCVを使った画素探査と座標の保存
|
body
CHANGED
File without changes
|
4
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,30 +19,47 @@
|
|
19
19
|
その後の処理が出来るかまでは判明しませんでした。
|
20
20
|
|
21
21
|
##
|
22
|
-
(追加)
|
22
|
+
(追加2)
|
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
|
-
|
43
|
+
int r =0;
|
44
|
+
int o=0;
|
45
|
+
// double pix=0;
|
32
|
-
|
46
|
+
double [] data =new double[avem2.width()*avem2.height()];
|
33
47
|
double[][] data2 =new double[2][avem2.width()*avem2.height()];
|
34
|
-
|
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(
|
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
内容の変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,12 +20,17 @@
|
|
20
20
|
|
21
21
|
##
|
22
22
|
(追加)
|
23
|
-
私なりにやってみましたが、
|
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
|
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
書式の変更
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
試したことを追加
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
|