Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opencv c++;加载图像,获得非常大的像素值 我是C++的新手。我加载图像并使用以下代码打印其像素值: #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; } }_C++_Opencv - Fatal编程技术网

opencv c++;加载图像,获得非常大的像素值 我是C++的新手。我加载图像并使用以下代码打印其像素值: #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; } }

opencv c++;加载图像,获得非常大的像素值 我是C++的新手。我加载图像并使用以下代码打印其像素值: #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; } },c++,opencv,C++,Opencv,这绝对是错误的。我尝试使用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]] 我得到的正常输出如下所示: import cv2

这绝对是错误的。我尝试使用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]]
我得到的正常输出如下所示:

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++代码有什么问题?< /P> 我试图替换为
cv::Vec3b
,但没有成功。印刷品如下:

, <, 8
, ,

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

那么是什么让您选择
cv img.at
cv img.at
?似乎您刚刚选择了错误的类型。您是否尝试过使用
cv::Vec3b
,对于uchar值,应使用此类型。很抱歉,这似乎不起作用。我在问题中更新了它。我还是打印错了。还有其他解决办法吗?谢谢在打印之前,可能需要将其转换为
int
。因为数据类型是uchar,所以print语句打印的是ascii码而不是实际值。