2016-12-09 16 views
0

パフォーマンス上の理由から、画像の下半分にHoughLinesPを実行することに興味があるので、ある画像の下部を別の画像にコピーしたい同じサイズの画像。元の画像と比較して線を検出する必要があるので、画像サイズを維持することが重要です。cv :: Matの底部を別のcv :: Matにコピー

私は次のコードでthisソリューションを適応しようとしている:しかし、私はいつもthisの例と同様のcopyToアサートエラーが表示さ

int startpoint{ 240 }; 
cv::Mat houghlinesmat{ image.size(), image.type(), cv::Scalar(0) }; 
houghlinesmat.setTo(0); 
image.copyTo(houghlinesmat(cv::Rect(0, 
            startpoint, 
            image.cols, 
            image.rows - startpoint))); 

。しかし、それは私には1行または1列のオフの問題であるとは思われません。私はcv:rectをエラーなしで出力より小さくコピーできないようです。何が欠けているのか?

+0

cv :: Matのサイズを確認しましたか? – Marcel

+0

私はhoughlinesmatを初期化するときにimage.size()を使用していますので、同じサイズにする必要があります。しかし、それは簡単なチェックです、私は先に行って、数分でそれを行うでしょう。 – DrTarr

+0

画像が同じサイズであることを確認しました。 – DrTarr

答えて

0

最後の解決策hereの最後のコメントを参照してください。

は適応:

​​

最後に見たが、私は望んでいたまさに少し厄介。基本的には、ソースリージョンとデスティネーションリージョンの両方を指定していないため、サイズが一致しませんでした。

-1

はこれを試してみてください:

image.copyTo(houghlinesmat, cv::Rect(0, 
            startpoint, 
            image.cols, 
            image.rows - startpoint)); 

は、マスクの大きさに注意してください。

+0

運がない、コンパイルエラー: "エラー: 'cv :: Mat :: copyTo(cv :: Mat&、cv :: Rect)'の呼び出しで一致する関数がありません。 – DrTarr

関連する問題