2016-07-15 7 views
0

私はベクトルdataを持っていると私はcv::matを作成します。C++ OpenCVの - マットへの変更、同様のinitマットに使用するベクターを変更

normalize(HNorm, HNorm, 0, 300, cv::NORM_MINMAX, -1, cv::Mat()); 

cv::Mat HNorm(this->data.size(), 1, CV_32FC1, this->data.data()); 

それから私はHNormの値を正規化

同じ正規化がdataベクターに起こっていることです。私が欲しいのは、HNormと一緒に働くことができ、dataに影響することです。

答えて

2

使用する特定のコンストラクタはデータをコピーしません。これは効率の理由からこのように設計されています。これは基本的にMatヘッダーを作成し、内部ポインターを付属のdata配列を指すように変更します。入力データ配列に影響を与えずに後続の操作で基になるデータを変更しない場合は、それをコピーする必要があります。

cloneMatオブジェクトです。これにより、基礎となるデータがコピーされます。ここでのドキュメントを参照してください:

http://docs.opencv.org/master/d3/d63/classcv_1_1Mat.html#ad1c9cc37d66c4e5bd05fae36f62d1cb4

だから、のようなもの:

cv::Mat HNorm(this->data.size(), 1, CV_32FC1, this->data.data()); 
cv::Mat cloned = HNorm.clone(); 

// work on the cloned object now 
関連する問題