gpt4 book ai didi

opencv - 在 OPENCV 中打印出矩阵值不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:26 25 4
gpt4 key购买 nike

我开始使用 OPENCV,我首先测试了一些基本的命令。目前我尝试打印出 jpg 图像的特定值。我已经阅读了几篇文章并构建了以下 C++ 程序。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;
using namespace std;

int main() //(int argc, char** argv)
{
Mat image;
image = imread("Desert.jpg", IMREAD_COLOR);
cout << image.at<Vec3b>(1, 1)[0] << std::endl;
cout << image.at<Vec3b>(1,1) << std::endl;
image.at<Vec3b>(1, 1)[0] = 10;
cout << image.at<Vec3b>(1, 1) << std::endl;
return 0;
}

终端的输出是


[205, 123, 51]
[10, 123, 51]

所以当我打印出像素 (1,1) 的第一个 channel 时,我得到了一个奇怪的值。与此相反,我可以一次打印所有三个。我什至可以使用相同的语法更改 channel 1 中像素 (1,1) 的值。

我使用 visual Studio 和 OPENCV 的 Vesion 3.4.1。为什么会发生这种情况有什么建议或意见吗?

最佳答案

它打印的值看起来很糟糕,但实际上是正确的。

Vec3b 类型是具有3 字节条目 的向量,其中这些字节存储为无符号字符值以表示0 -> 255 颜色范围。您在控制台中看到字节值 205。

Vec3b 对象很可能覆盖了 << 以处理打印出供用户阅读的值。

尝试将字节类型转换为 int 以查看值:

cout << (int)image.at<Vec3b>(1, 1)[0] << std::endl;

关于opencv - 在 OPENCV 中打印出矩阵值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51289114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com