質問編集履歴

1

今の現状

2017/03/15 10:09

投稿

toyadai056
toyadai056

スコア34

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  OpenCVでカメラから画像を取得し、その画像を縦3,横3の9マスに分けて処理が行われるようにし、
4
4
 
5
- 1マスにつき、そマス内の画素値をみていき、その中で一番多い画素値でそのマスを塗り潰した出力画像が出るようにしたいです。
5
+ 1マスごと平均画素値を分かるようにしたいです。
6
+
7
+ その値が
6
8
 
7
9
  0から60なら 0
8
10
 
@@ -10,14 +12,64 @@
10
12
 
11
13
  180から255なら255
12
14
 
13
- と考え、この中で一番い画素値の色
15
+ なるように考え、この中で一番い画素値の色
14
16
 
15
17
  白、灰色、黒のどれかになるようにしたいです。
16
18
 
17
- マスの線は書いてあるとして
18
-
19
19
  分からないこと
20
20
 
21
- マスごとの
21
+ マスごとの平均画素値の求め
22
22
 
23
+ マスの大きさがうまく分けられていない。
24
+
25
+ 平均がうまくでない。
26
+
27
+
28
+
29
+ while(1){
30
+
31
+ frame=cvQueryFrame(src);
32
+
33
+ cvCvtColor(frame,imgDst,CV_RGB2GRAY);
34
+
35
+ cvThreshold(imgDst,imgBinary,127,255,CV_THRESH_BINARY);
36
+
37
+ //cvSmooth(imgDst,imgFiltagray,CV_GAUSSIAN,3,3);
38
+
39
+
40
+
41
+ for(int i=1;i<4;i++){
42
+
43
+ int width=0,height=0;
44
+
45
+ for(int y=(i-1)*height/3;y<imgDst->height;y++){
46
+
47
+ for(int x=(i-1)*width/3;x<imgDst->width;x++){
48
+
49
+ int a=imgDst->widthStep*y+x;
50
+
51
+ unsigned char p = imgDst->imageData[a];
52
+
53
+ ave=ave+imgDst->imageData[a];
54
+
55
+ /*if(ave<80){
56
+
57
+ imgDst->imageData[a]=0;
58
+
59
+ }else if(80<=ave&&ave<160){
60
+
61
+ imgDst->imageData[a]=160;
62
+
23
- 画素値操作
63
+ }else{
64
+
65
+ imgDst->imageData[a]=255;
66
+
67
+ }*/
68
+
69
+ }//ave=ave/(height*width);
70
+
71
+ printf("%f\n",ave);
72
+
73
+ }
74
+
75
+ }