C OpenCV:尝试打印垫子值,但要获得空打印
C++ Opencv: Try to print Mat value, but get empty prints
完整源代码如下显示:
#include "opencv2/opencv.hpp"
#include <opencv2/core/core.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char const *argv[])
{
int n_Channel = 3;
Mat M(Size(100, 200), CV_32FC(n_Channel));
cout << M.rows << "," << M.cols << "," << M.channels() << endl;
for (int i = 0; i < n_Channel; ++i)
{
M.at<Vec3b>(4,3)[i] = i+1;
}
for (int i = 0; i < n_Channel; ++i)
{
cout << "i=" << i << ", " << M.at<Vec3b>(4,3) << endl;
cout << "i=" << i << ", |" << M.at<Vec3b>(4,3)[i] << "|" << endl;
}
return 0;
}
在最后的打印中,我希望看到" i = 0,| 2 |"之类的印刷行。但是,我得到了" i = 0,||",没有任何" |"对。我的代码怎么了?
完整的打印消息如下:
200,100,3
i=0, [1, 2, 3]
i=0, ||
i=1, [1, 2, 3]
i=1, ||
i=2, [1, 2, 3]
i=2, ||
谢谢大家帮助我!
Miki的评论是正确的,但这是一个解释说明发生的原因:
初始化 Mat M
by:
Mat M(Size(100, 200), CV_32FC(n_Channel));
M
的矩阵类型设置为32位,并且在3个通道Mat M
中的每个像素保持在0到1.0之间的浮点值。现在,要在Mat M
中打印像素的值,必须使用正确的指定器,如果Mat M
,则应是Vec3f
,即向量,带有3个float条目而不是在Vec3b
中,即具有3个字节条目的向量(非常适合CV_8UC3
)。
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 成功打印每个元素后出现 OpenCV 分割错误
- 使用__android_log_print打印OpenCV垫子的内容Android NDK
- C OpenCV:尝试打印垫子值,但要获得空打印
- C OPENCV:分配值后打印垫时发生错误
- OpenCV打印出矩阵的一个元素
- OpenCv c++为基本的打印垫函数创建一个c包装器
- OpenCV - 仅在绘制单应性时打印对象名称
- 如何根据C++中的数据类型打印 OpenCv 矩阵
- 使用 OpenCV 将鼠标指针悬停在图像上时在图像上打印像素坐标
- OpenCV C++颜色检测和打印Mac
- 使用OpenCV putText在图像上打印时出错
- 用C++以特定格式打印openCV Mat内容
- 如何打印矢量值在OpenCV
- 打印CV_32F opencv 矩阵值
- 从OpenCV中打印String*的内容