【发布时间】:2014-01-16 00:07:58
【问题描述】:
我有一个CV_8UC1 类型的图像。如何将所有像素值设置为特定值?
【问题讨论】:
我有一个CV_8UC1 类型的图像。如何将所有像素值设置为特定值?
【问题讨论】:
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);
documentation 描述:
Mat& Mat::operator=(const Scalar& s)
s – 分配给每个矩阵元素的标量。矩阵大小或类型没有改变。
【讨论】:
对于灰度图像:
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 的给定通道设置为给定值,请查看this thread。
【讨论】:
【讨论】: