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

回答編集履歴

3

update

2017/03/17 03:56

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -22,6 +22,8 @@
22
22
  }
23
23
  ```
24
24
 
25
+ もう少しすっきりした書き方として、与えられた画像領域の平均画素値を求める[`cv::mean`](http://opencv.jp/opencv-2.1/cpp/operations_on_arrays.html#cv-mean)が利用できます。同関数により内側の2重ループは不要とできます。
26
+
25
27
  > 3:配列にしっかりと数字が入ったのかの確認がうまくできない。
26
28
 
27
29
  質問意図を汲み取れないのですが、printfデバッグでは不十分という事でしょうか?なお、質問中のコードではあなたの期待通り動かないでしょう。

2

update

2017/03/17 03:56

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  > 3:配列にしっかりと数字が入ったのかの確認がうまくできない。
26
26
 
27
- 質問意図を汲み取れないのですが、printfデバッグでは不十分という事でしょうか?
27
+ 質問意図を汲み取れないのですが、printfデバッグでは不十分という事でしょうか?なお、質問中のコードではあなたの期待通り動かないでしょう。
28
28
 
29
29
  ---
30
30
  > Matを使わずIPLIMAGEでオセロを作りたいのですが、

1

update

2017/03/17 03:52

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -4,8 +4,24 @@
4
4
 
5
5
  > 2:マスを左上から順に見ていくときの始まりと終わりの書き方
6
6
 
7
- 質問意図を正確汲み取れませんが質問中コ2重forループで問題無いのでは?
7
+ 素直書き下すならば3x3マス単位の2重ルプを用意し、さらに各マス内画素走査を行う2重ループ構造になります。(つまり4重ループ)
8
8
 
9
+ ```C++
10
+ for (int block_y = 0; block_y < 3; block_y++) {
11
+ for (int block_x = 0; block_x < 3; block_x++) {
12
+ int block_left; // 位置(block_x, block_y)マスの左上X座標 を計算
13
+ int block_top; // 位置(block_x, block_y)マスの左上Y座標 を計算
14
+ int block_right; // 位置(block_x, block_y)マスの右下X座標+1 を計算
15
+ int block_bottom; // 位置(block_x, block_y)マスの右下Y座標+1 を計算
16
+ for (int y = block_top; y < block_bottom; y++) {
17
+ for (int x = block_left; x < block_right; x++) {
18
+ // 画素(x,y)にアクセス
19
+ }
20
+ }
21
+ }
22
+ }
23
+ ```
24
+
9
25
  > 3:配列にしっかりと数字が入ったのかの確認がうまくできない。
10
26
 
11
27
  質問意図を汲み取れないのですが、printfデバッグでは不十分という事でしょうか?