回答編集履歴

3

update

2017/03/17 03:56

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -46,6 +46,10 @@
46
46
 
47
47
 
48
48
 
49
+ もう少しすっきりした書き方として、与えられた画像領域の平均画素値を求める[`cv::mean`](http://opencv.jp/opencv-2.1/cpp/operations_on_arrays.html#cv-mean)が利用できます。同関数により内側の2重ループは不要とできます。
50
+
51
+
52
+
49
53
  > 3:配列にしっかりと数字が入ったのかの確認がうまくできない。
50
54
 
51
55
 

2

update

2017/03/17 03:56

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- 質問意図を汲み取れないのですが、printfデバッグでは不十分という事でしょうか?
53
+ 質問意図を汲み取れないのですが、printfデバッグでは不十分という事でしょうか?なお、質問中のコードではあなたの期待通り動かないでしょう。
54
54
 
55
55
 
56
56
 

1

update

2017/03/17 03:52

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -10,7 +10,39 @@
10
10
 
11
11
 
12
12
 
13
+ 素直に書き下すならば、3x3マス単位の2重ループを用意し、さらに各マス内の画素走査を行う2重ループ構造になります。(つまり4重ループ)
14
+
15
+
16
+
17
+ ```C++
18
+
19
+ for (int block_y = 0; block_y < 3; block_y++) {
20
+
21
+ for (int block_x = 0; block_x < 3; block_x++) {
22
+
23
+ int block_left; // 位置(block_x, block_y)マスの左上X座標 を計算
24
+
25
+ int block_top; // 位置(block_x, block_y)マスの左上Y座標 を計算
26
+
27
+ int block_right; // 位置(block_x, block_y)マスの右下X座標+1 を計算
28
+
29
+ int block_bottom; // 位置(block_x, block_y)マスの右下Y座標+1 を計算
30
+
31
+ for (int y = block_top; y < block_bottom; y++) {
32
+
13
- 質問意図を正確に汲み取れませんが、質問中コードのように2重forループで問題無いのでは?
33
+ for (int x = block_left; x < block_right; x++) {
34
+
35
+ // 画素(x,y)にアクセス
36
+
37
+ }
38
+
39
+ }
40
+
41
+ }
42
+
43
+ }
44
+
45
+ ```
14
46
 
15
47
 
16
48