Ответ 1
Если вы имеете дело с матрицей uchar (CV_8U):
mat.at<uchar>(row, column, channel) = val;
Мне нужно установить один пиксель в объекте Mat на определенное значение.
Как это сделать?
Я использую openCV 2.1 с visual studio 2010.
Если вы имеете дело с матрицей uchar (CV_8U):
mat.at<uchar>(row, column, channel) = val;
На самом деле существует 4 способа получения/установки значения пикселя в объекте cv:: Mat, как описано в учебнике OpenCV.
Один упоминаемый @Régis называется On-The-Fly RA в учебнике OpenCV. Это самое удобное, но и трудоемкое время.
Основываясь на учебном эксперименте, он также отображает различия в производительности во всех четырех методах.
Вот пример:
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;
}