gpt4 book ai didi

c++ - opencv c++ 加载图像,获得非常大的像素值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:02:22 33 4
gpt4 key购买 nike

我是 C++ opencv 的新手。我使用以下代码加载图像并打印其像素值:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/videoio.hpp>
cv::Mat cv_img;
cv_img = cv::imread("./input_image/000000.jpg", cv::IMREAD_COLOR);
std::cout << cv_img.rows << "," << cv_img.cols << "," << cv_img.channels() << std::endl;
for (int i = 0; i < 20; ++i)
{
for (int j = 0; j < 20; ++j)
{
std::cout << cv_img.at<cv::Vec3w>(i, j)[0] << ", " << cv_img.at<cv::Vec3w>(i, j)[1] << ", " << cv_img.at<cv::Vec3w>(i, j)[2] << std::endl;
}
}

for (int i = 0; i < 20; ++i)
{
for (int j = 0; j < 20; ++j)
{
std::cout << cv_img.at<cv::Vec3i>(i, j)[0] << ", " << cv_img.at<cv::Vec3i>(i, j)[1] << ", " << cv_img.at<cv::Vec3i>(i, j)[2] << std::endl;
}
}

但是当我打印它的像素时,我得到如下值:

5139, 4882, 4628
5139, 4882, 4628
269488655, 336662803, 320147986
320017682, 370349078, 336990996

这绝对是错误的。我尝试使用 opencv-python 加载相同的图像,如下所示:

import cv2
img = cv2.imread("./input_image/000000.jpg", cv2.IMREAD_COLOR)
print(img[0:20,0:20,:])

我得到如下的正常输出:

 [[58 59 55]
[30 31 27]
[28 29 25]
...
[23 24 20]
[22 23 19]
[21 22 18]]

我的 C++ 代码有什么问题?

我尝试用 cv::Vec3b 替换,但没有用。打印结果如下:

, <, 8
, ,

(许多空格)

谢谢大家对我的帮助!

最佳答案

根据 docs .您应该使用 cv::vec3b 访问 uchar 数据类型的像素值。

关于c++ - opencv c++ 加载图像,获得非常大的像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57216595/

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