为了使我的问题更清楚,请查看代码。
vector<cv::Vec3b> v_char; // the vector that I am storing my r,g,b values, or b,g,r in this case since it's opencv.
我知道打印出使用值的价值,我可以直接从图像中取出,就像这样。
b = image.at<cv::Vec3b>(i,j)[0];
g = image.at<cv::Vec3b>(i,j)[1];
r = image.at<cv::Vec3b>(i,j)[2];
然而,没有使用图像(想象图像消失了),我只想要来自矢量的值v_char,其中所有的图像值都已存储,比如说,我只想要r值,我该如何检索它?试图在互联网上搜索并玩弄代码,但无济于事(
编辑:更多细节 向量v_char只是存储图像的一行的值。例如:我想找到并打印出可以在v_char向量中找到的特定行的所有r值。我可以使用for循环,但是如何仅声明r值?
答案 0 :(得分:5)
Vec3b v_char
本身是3个值的向量,可以first values = v_char.val[0]
,second values = v_char.val[1]
,third values = v_char.val[2]
访问。由于您只需要red
值,因此只需访问整个向量的v_char.val[0]
中的所有值。
所以通过for loop
尝试获取所有值:
v_char[i].val[0]; // "i" represents the index of "for loop" for a given row
答案 1 :(得分:1)
在不知道您的数据结构的情况下很难知道,但很可能是这样的。
假设j
是行索引,i
是列索引,行的步幅整齐排列。
auto &px = v_char[j * width + i];