【发布时间】:2023-04-02 08:24:01
【问题描述】:
我正在制作一种存储在 OpenCV 矩阵中的直方图。
所以,如果我匹配一个结果,我会在某个索引上 +1。
我的垫子是:
Mat countFramesMatrix = Mat::zeros(9,9,CV_8U);
当我尝试访问 sum +1 到已设置的索引(从 0 开始)时,我会这样做:
int valueMatrixFrames = countFramesMatrix.at<int>(sliceMatch.j, sliceMatch.i);
valueMatrixFrames++;
countFramesMatrix.at<unsigned char>(sliceMatch.j, sliceMatch.i) = (unsigned char)valueMatrixFrames;
我尝试了其他方式,例如将 unsigned char 更改为 int 之前遇到的其他问题,但没有任何反应。
我的结果是:
- 或者所有矩阵都为零。
-
或者我得到类似的东西:
[2.3693558e-38, 0, 0, 0, 0, 0, 0, 0, 0; 2.3693558e-38, 0, 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0, 0, 0; 0, 0, 0, 0, 0, 0, 0, 0, 0]
而且我从不将数据存储在 (0,0) 或 (0,1) 或 (1,0) 或 (1,1),:(
你有什么建议?谢谢。
【问题讨论】:
-
如何声明 countFramesMatrix ?您访问此矩阵有时会告诉编译器这是一个 int 矩阵,有时会告诉编译器这是一个 char 矩阵。从技术上讲,这不是禁止这样做的,但我怀疑这是你想要做的。
标签: c++ opencv image-processing mat