我成功地使用来自 Kinect V2 libfreenect2 库的深度和 RGB 数据创建并填充了一个矩阵,如下所示:
cv::Mat(registered.height, registered.width, CV_8UC4, registered.data).copyTo(cpu_depth);
cv::imshow("depth", cpu_depth);
我相信对于图像中的每个点,此矩阵都等同于 [X,Y,Z,R,G,B,A]。如何访问矩阵中的 unsigned char 值?
我试过这样的:
uchar xValue = cpu_depth.at(cv::Point(20, 20))[0];
但它没有编译,我觉得我遗漏了一些非常明显的东西。
最佳答案
我想通了。您需要声明每个 channel 有 4 个字节和一个强制转换。因此,要正确访问矩阵中的点,您可以这样做:
uchar xValue = cpu_depth.at<cv::Vec4b>(cv::Point(20, 20))[0];
关于c++ - 如何从 CV_8UC4 矩阵中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34356976/