如何将OpenCV Mat的所有像素设置为特定值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将OpenCV Mat的所有像素设置为特定值?相关的知识,希望对你有一定的参考价值。
我有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。:如果您想进一步了解如何在不更改其他通道的情况下有效地将this thread的给定通道设置为给定值,请签出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 –分配给每个矩阵元素的标量。矩阵大小或类型不变。
另一答案
以其他方式可以使用
赞
Mat src(480,640,CV_8UC1);
src.setTo(123); //assign 123
以上是关于如何将OpenCV Mat的所有像素设置为特定值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OpenCV 中计算 Mat 的最大像素值 [重复]