タイプCV_8UC1
の画像があります。すべてのピクセル値を特定の値に設定するにはどうすればよいですか?
グレースケール画像の場合:
cv::Mat m(100, 100, CV_8UC1); //gray
m = Scalar(5); //used only Scalar.val[0]
または
cv::Mat m(100, 100, CV_8UC1); //gray
m.setTo(Scalar(5)); //used only Scalar.val[0]
または
Mat mat = Mat(100, 100, CV_8UC1, cv::Scalar(5));
カラー画像の場合(3チャンネルなど)
cv::Mat m(100, 100, CV_8UC3); //3-channel
m = Scalar(5, 10, 15); //Scalar.val[0-2] used
または
cv::Mat m(100, 100, CV_8UC3); //3-channel
m.setTo(Scalar(5, 10, 15)); //Scalar.val[0-2] used
または
Mat mat = Mat(100, 100, CV_8UC3, cv::Scalar(5,10,15));
P.S。:チェックアウト このスレッド さらにcv::Mat
他のチャネルを変更せずに、特定の値に効率的に変更します。
cv::Mat
の割り当て演算子は、次のようにcv::Scalar
の割り当てを許可するために実装されています。
// Create a greyscale image
cv::Mat mat(cv::Size(cols, rows), CV_8UC1);
// Set all pixel values to 123
mat = cv::Scalar:all(123);
ドキュメント の説明:
Mat&Mat :: operator =(const Scalar&s)
s –各行列要素に割り当てられたスカラー。マトリックスのサイズまたはタイプは変更されません。