0

私は次のものを持っています:

char* imgData;
Scalar scal = cvGet2D(imgData, x, y);

Scalar は次のように定義されます。

typedef struct Scalar
{
double val[3];
}
Scalar;

結果としてスカラーが必要ですが、cvGet2D を使用しません。

どうすればそれを実装できますか?

4

2 に答える 2

0

cvGet2D()考えられるすべての画像深度、チャネル数などを考慮に入れる必要があります。
コンパイル時に画像形式がわかっている場合は、ポインター演算を介してピクセルに直接アクセスできます。

于 2013-10-15T08:30:11.333 に答える
0

たぶん、この投稿はさらに役立ちます:

OpenCV でピクセルにアクセスするにはどうすればよいですか?

あなたの場合、img->imageData は単に imgData です。x と y のすべてのピクセルにアクセスするには、画像の幅ステップ (行ステップ) を知る必要があります。次のようなものがあると思います:

int x=44;
int y=21;
int widthstep=480;
Scalar pixel = ((Scalar*)imgData)[y*widthstep+x];
于 2013-10-15T11:35:17.663 に答える