如何将像素设置为cv::Mat对象中的值

How to set a pixel to a value in a cv::Mat object?

本文关键字:Mat 对象 cv 像素 设置      更新时间:2023-10-16

我需要将Mat对象中的单个像素设置为某个值。

怎么做?

我正在使用openCV 2.1与visual studio 2010。

如果您正在处理uchar(CV_8U)矩阵:

 mat.at<uchar>(row, column, channel) = val;

事实上,有4种方法可以在cv::Mat对象中获取/设置像素值,如OpenCV教程中所述。

在OpenCV教程中,@Régis提到的一个被称为On The Fly RA。这是最方便的,但也很耗时。

基于教程的实验,它还列出了所有4种方法的性能差异。

  • 高效方式79.4717毫秒
  • 迭代器83.7201毫秒
  • 动态RA93.7878毫秒
  • LUT功能32.5759毫秒

这里有一个例子:

vector<cv::Point3f> xyzBuffer;
cv::Mat xyzBuffMat = cv::Mat(307200, 1, CV_32FC3);
for (int i = 0; i < xyzBuffer.size(); i++) {
    xyzBuffMat.at<cv::Vec3f>(i, 1, 0) = xyzBuffer[i].x;
    xyzBuffMat.at<cv::Vec3f>(i, 1, 1) = xyzBuffer[i].y;
    xyzBuffMat.at<cv::Vec3f>(i, 1, 2) = xyzBuffer[i].z;
}