Matを使わずIPLIMAGEでオセロを作りたいのですが、
OpenCVでカメラから画像を取得し、その画像を縦3,横3の9マスに分けて処理が行い、 1マスごとの平均画素値を分かるようにしたいです。
その値が
0から60なら 0
60から180なら1
180から255なら2
という値を3×3の配列に入るようにしたいです。
分からないこと
1:1マスごとの平均画素値の求め方で画素値を合計したときに何で割ればよいのか
2:マスを左上から順に見ていくときの始まりと終わりの書き方
3:配列にしっかりと数字が入ったのかの確認がうまくできない。
double ave=0;
int k,l;
int z[3][3];
while(1){
frame=cvQueryFrame(src);
cvCvtColor(frame,imgDst,CV_RGB2GRAY);
cvThreshold(imgDst,imgBinary,127,255,CV_THRESH_BINARY);
for(int i=1;i<4;i++){
int width=0,height=0;
for(int y=(i-1)*height/3;y<imgDst->height;y++){//2
for(int x=(i-1)width/3;x<imgDst->width;x++){ //2
int a=imgDst->widthStepy+x; //1
unsigned char p = imgDst->imageData[a];//1
ave=ave+imgDst->imageData[a]; //1
if(ave < 80){//3
z[i-1][i-1]=0;//3
}else if(80 <= ave && ave <= 160){//3
z[i-1][i-1]=1;//3
}else if(ave > 160){//3
z[i-1][i-1]=2;//3
}
}
for(k=0;k<3;k++){//3
for(l=0;l<3;l++){//3
printf("%d\n",z[l][k]);//3
}
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。