卒業研究で動画内の右から左に駆けていく車の
交通量を調べるプログラムを製作しています。
オブジェクト検出を用いて動画中の車を
検出して、その際に点を絵画するのですが、
そこから画面内に縦のラインを設けて、
そのライン上に点が通れば1台通ったとカウント
するプログラムを作りたいのですがどうすればいいでしょうか?
OpenCVで特定領域内のRGB値を検出する方法
Re: OpenCVで特定領域内のRGB値を検出する方法
指定ピクセルへアクセスするサンプルコードがあります
http://opencv.jp/sample/basic_structure ... ess_pixels
http://opencv.jp/sample/basic_structure ... ess_pixels
-
イナバ
Re: OpenCVで特定領域内のRGB値を検出する方法
CvScalar s;
for(y = 0; y < img->height; y++) {
for(x = 0; x < img->width; x++) {
s = cvGet2D(img, y, x);
}
}
お答え頂きありがとうございます!
cvget2dで指定した画像の(x,y)座標のrgb値を取得するわけですね。
if文で画素値を調べて順次調べて、
画素値が(0,0,255)の値をカウントしていく際は
int = 0;
CvScalar s;
for(y = 150; y < img->height; 151;y++) {
for(x = 0; x < img->width; x++) {
s = cvGet2D(img, y, x);
if(s=cvScalar( 0, 0, 255 )){
i=i+1;
}
}
}
このような感じでしょうか?
for(y = 0; y < img->height; y++) {
for(x = 0; x < img->width; x++) {
s = cvGet2D(img, y, x);
}
}
お答え頂きありがとうございます!
cvget2dで指定した画像の(x,y)座標のrgb値を取得するわけですね。
if文で画素値を調べて順次調べて、
画素値が(0,0,255)の値をカウントしていく際は
int = 0;
CvScalar s;
for(y = 150; y < img->height; 151;y++) {
for(x = 0; x < img->width; x++) {
s = cvGet2D(img, y, x);
if(s=cvScalar( 0, 0, 255 )){
i=i+1;
}
}
}
このような感じでしょうか?
-
イナバ
Re: OpenCVで特定領域内のRGB値を検出する方法
[訂正]
お答え頂きありがとうございます!
cvget2dで指定した画像の(x,y)座標のrgb値を取得するわけですね。
if文で画素値を順次調べて、
画素値が(0,0,255)の値をカウントしていく際は
int = 0;
CvScalar s;
for(y = 150; y < img->height; 151;y++) {
for(x = 0; x < img->width; x++) {
s = cvGet2D(img, y, x);
if(s=cvScalar( 0, 0, 255 )){
i=i+1;
}
}
}
このような感じでしょうか?
お答え頂きありがとうございます!
cvget2dで指定した画像の(x,y)座標のrgb値を取得するわけですね。
if文で画素値を順次調べて、
画素値が(0,0,255)の値をカウントしていく際は
int = 0;
CvScalar s;
for(y = 150; y < img->height; 151;y++) {
for(x = 0; x < img->width; x++) {
s = cvGet2D(img, y, x);
if(s=cvScalar( 0, 0, 255 )){
i=i+1;
}
}
}
このような感じでしょうか?
Re: OpenCVで特定領域内のRGB値を検出する方法
cvGet2Dを使うのは低速なので推奨されません。
カウントするときはこのような形になると思います。
カウントするときはこのような形になると思います。
int i = 0;
for (y = 0; y < img->height; y++) {
for (x = 0; x < img->width; x++) {
uchar b = img->imageData[img->widthStep * y + x * 3];
uchar g = img->imageData[img->widthStep * y + x * 3 + 1];
uchar r = img->imageData[img->widthStep * y + x * 3 + 2];
if (r == 0 && g == 0 && b == 255) {
i++;
}
}
}