私はOpenCVでイメージセグメンテーションのコードを書くことを試みています。画像処理の一環として、私はSobelフィルタを使ってテスト画像のエッジを検出しようとしています。EXC_BAD_ACCESSエラーOpenCV?
両方のdXと量dY方向に勾配の大きさを見つけるために、私は、勾配の両方のユークリッド距離を計算しています。しかし、コードを実行すると上記のエラーが発生します。私は上記のエラーは、私が "ACCESS"メモリ上で利用できない場所を試しているときに発生することを知っているが、私はすべて私のコードでMat
を定義していると確信しています。
これは私のコードの一部です。
//Blur the raw image to remove noise
GaussianBlur(src, src, kernel, 2);
//Run sobel edge detector
Sobel(src, edgeX, src.depth(), 1, 0);
Sobel(src, edgeY, src.depth(), 0, 1);
edge = Mat::zeros(317,554,CV_8UC1);
for (int r = 0; r < edgeX.rows; r++)
{
for (int c = 0; c < edgeY.cols; c++)
{
edge.at<double>(r,c) = sqrt((edgeX.at<double>(r,c)*edgeX.at<double>(r,c)) + (edgeY.at<double>(r,c)*edgeY.at<double>(r,c)));
}
}
ここ
src
:RGBテスト画像edgeX
:量dYedge
とソーベル出力:のdX勾配edgeY
とソーベル出力されますユークリッド距離の。私はこれをデバッグするにはどうすればよいedge.at<double>(316,395)
にアクセスしようとすると
私はこのライン
edge.at<double>(r,c) = sqrt((edgeX.at<double>(r,c)*edgeX.at<double>(r,c)) + (edgeY.at<double>(r,c)*edgeY.at<double>(r,c)));
でエラーが出ますか? 私は何が間違っていますか?
ありがとうございました:)それは助け – Vino
はうれしい:あなたの
for
ループ(それはfloat
の行列を必要とする)でやっている同様の操作を行い – Miki