私はcv :: Matオブジェクトにいくつか問題があります。以下のコードの出力はconst cv :: Mat typeのパラメータは関数内で変更されますか?
void processFrame(const cv::Mat image, MyTracker& t)
{
//some code
}
void main()
{
MyTracker t;
cv::VideoCapture(0);
cv::Mat im , im_gray;
while (true)
{
cap >> im;
cv::cvtColor(im, im_gray, CV_BGR2GRAY);
processFrame(im_gray,t);
cv::Rect r = t.bb_rot.boundingRect(); // get last bounding box of tracker
std::cout<<r.x<<"\t"<<r.y<<"\t"<<r.width<<"\t<<r.height;
}
}
を間違っていたが、私は代わりにprocessFrame(im_gray.clone(),t);
を使用する場合、問題を解決し、結果は正しいです。 clone()
関数がこれを解決できる問題は何ですか?ただし、processFrame
の最初のパラメータはconst cv::Mat image
であり、ProcessFrame
では変更できません。私はimage
オブジェクトがprocessFrame
機能に
マットヘッダーは、ピクセルデータのconstはなくではありません。 – Micka
[const cv :: Mat& "、" cv :: Mat& "、" cv :: Mat "または" const cv :: Mat "を関数パラメータとして使用する違いはありますか?](http:// stackoverflow .com/questions/23468537/difference-of-use-const-cvmat-cvmat-cvmat-or-const-cvmat) – herohuyongtao