我需要将Mat对象中的单个像素设置为某个值。
怎么做?
我在visual studio 2010中使用openCV 2.1。
答案 0 :(得分:17)
如果您正在处理uchar(CV_8U)矩阵:
mat.at<uchar>(row, column, channel) = val;
答案 1 :(得分:5)
实际上,如the OpenCV tutorial中所述,有4种方法可以在cv :: Mat对象中获取/设置像素值。
在OpenCV教程中提到的@Régis被称为 On-The-Fly RA 。这是最方便但也很耗时的。
基于tutorial's experiment,它还列出了所有4种方法的性能差异。
答案 2 :(得分:2)
以下是一个例子:
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;
}