• ベストアンサー

【OpenCV】二値画像後、白の部分の面積を求める

OpenCVで二値画像後、白の部分の面積を求めたいのですがどのようにしたらよいでしょうか? OS : Linux FedoraCore7

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんにちは。  当方はwindowsなのですが、openCVと言う事で、一応お話だけでも。  iplのimageDataがグラフィックスを示す配列ですので、二値化した後、imageDataを走査しながら、ビットが立っていればカウントアップすれば白い面積が取れる様な気がします。  以下参考程度に。 typedef struct { int dim;//総面積 int white;//白の面積 int black;//黒の面積 }MONOSPACE; MONOSPACE space = {0}; //ファイルからイメージを読み込む IplImage* img = ::cvLoadImage("TestImage.bmp", 0); //二値化する(127以上で1を出力する) ::cvThreshold(img, img, 255 / 2, 1, CV_THRESH_BINARY); for(int y = 0; y < img->height; y++) { for(int x = 0; x < img->width; x++) { const int val = img->imageData[y * img->widthStep + x]; if(val & 1)++space.white;//白色なのでカウントする } } //総面積 space.dim = img->width * img->height; //黒い面積 space.black=space.dim - space.white; //iplの開放 ::cvReleaseImage(&img);

wakatiko
質問者

お礼

IplImage構造体の中のimageDataを見ればよかったんですね! ありがとうございます!!無事面積を求めることが出来ました(^^)

関連するQ&A