1

現在、画像を 3 つのチャネルに分割することを計画しているので、画像の RGB 値を取得して散布図をプロットできるため、共分散行列、平均などを計算する正規分布を使用してモデル化できます。次に、背景間の距離を計算します。ポイントと実際の画像を使用して、画像をセグメント化します。

私の最初のタスクでは、次のコードを書きました。

    VideoCapture cam(0);
//int id=0;
Mat image, Rch,Gch,Bch;
vector<Mat> rgb(3);         //RGB is a vector of 3 matrices

namedWindow("window");
while(1)
{
    cam>>image;
split(image,rgb);
    Bch = rgb[0];
    Gch = rgb[1];
    Rch = rgb[2];

しかし、分割関数に到達するとすぐにステップスルーすると、未処理の例外エラーが発生します。アクセス違反書き込み箇所 0xfeeefeee

私はまだopencvに慣れていないので、未処理の例外エラーの処理に慣れていません。

ありがとう

4

2 に答える 2

1

Matsplit は、rgbベクトル内に のインスタンスが 3 つあることを期待しているように聞こえます。しかし、3 つのアイテムを保持するように準備しただけで、実際には空です。

ベクトルに 3 つの項目を追加して、もう一度実行してみてください。

于 2013-03-16T18:56:47.603 に答える
0

これは古い問題ですが、うまくいった解決策を共有したいと思います。の代わりにvector<Mat> rgb(3);を使用しMat channels[3];ました。imread で読み込まれた画像でも split を使用できなかったときに、vector を使用すると何か問題があることに気付きました。残念ながら、この変更が機能する理由を説明することはできませんが、できる人がいれば素晴らしいことです。

于 2016-05-03T21:33:27.760 に答える