Potrzebuję ustawić pojedynczy piksel w obiekcie Mat na określoną wartość.Jak ustawić piksel na wartość w obiekcie cv :: Mat?
Jak to zrobić?
Używam OpenCV 2.1 z visual studio 2010.
Potrzebuję ustawić pojedynczy piksel w obiekcie Mat na określoną wartość.Jak ustawić piksel na wartość w obiekcie cv :: Mat?
Jak to zrobić?
Używam OpenCV 2.1 z visual studio 2010.
Jeśli masz do czynienia z uchar (CV_8U) matryca:
mat.at<uchar>(row, column, channel) = val;
W rzeczywistości istnieją 4 rodzaje metod get/set wartość piksela w obiekcie cv :: Mat, jak opisano w the OpenCV tutorial.
Wspomniany jeden @ Régis jest nazywany On-The-Fly RA w samouczku OpenCV. Jest to najwygodniejsze, ale również czasochłonne.
Na podstawie tutorial's experiment podaje również różnice wydajności we wszystkich 4 metodach.
Oto przykład:
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;
}
możliwych duplikatów [OpenCV pobierz informacje o pikselach z obrazu Mat] (http://stackoverflow.com/questions/7899108/opencv-get-pixel-information-from-mat-image) – Sam
Istnieje wiele innych postów wyjaśniających dokładnie ten sam problem – Sam
Nie mówiąc już o faktycznej dokumentacji OpenCV, której pierwsze kilka akapitów na 'cv :: Mat' powinno to omówić. –