c++ - 如何从 CV_8UC4 矩阵中获取值

标签 c++ opencv

我成功地使用来自 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/

相关文章:

python - 如何跟踪具有特定颜色的矩形

c++ - 在opencv中找到轮廓/对象之间的距离

c++ - 启动时在 ros2 中找不到共享运行时库

c++ - 无法读取 Unicode 字符 - C++

c++ - 如何在内存中连续分配可变大小的结构?

c++ - 为什么 C++ fwrite() 在发行版中产生更大的输出?

c++ - 返回指针数组(CvSeq 指针)

python - 构建 OpenCV cmake 错误 : could NOT find PythonInterp

c++ - 模板模板类谓词在部分特化中不起作用

java - matlab细化算法java实现