私は次のものを持っています:
char* imgData;
Scalar scal = cvGet2D(imgData, x, y);
Scalar は次のように定義されます。
typedef struct Scalar
{
double val[3];
}
Scalar;
結果としてスカラーが必要ですが、cvGet2D を使用しません。
どうすればそれを実装できますか?
私は次のものを持っています:
char* imgData;
Scalar scal = cvGet2D(imgData, x, y);
Scalar は次のように定義されます。
typedef struct Scalar
{
double val[3];
}
Scalar;
結果としてスカラーが必要ですが、cvGet2D を使用しません。
どうすればそれを実装できますか?
cvGet2D()
考えられるすべての画像深度、チャネル数などを考慮に入れる必要があります。
コンパイル時に画像形式がわかっている場合は、ポインター演算を介してピクセルに直接アクセスできます。
たぶん、この投稿はさらに役立ちます:
OpenCV でピクセルにアクセスするにはどうすればよいですか?
あなたの場合、img->imageData は単に imgData です。x と y のすべてのピクセルにアクセスするには、画像の幅ステップ (行ステップ) を知る必要があります。次のようなものがあると思います:
int x=44;
int y=21;
int widthstep=480;
Scalar pixel = ((Scalar*)imgData)[y*widthstep+x];