gpt4 book ai didi

c++ - 使用 step 方法检索图像的 bgr 值的代码有什么问题

转载 作者:行者123 更新时间:2023-11-28 02:51:35 25 4
gpt4 key购买 nike

这是我从信誉良好的来源获得的代码,但它不起作用:

    Mat img = imread("/home/w/d1",CV_LOAD_IMAGE_COLOR);
unsigned char *input = (unsigned char*)(img.data);

int i,j,r,g,b;
for(int i = 0;i < img.rows ;i++){
for(int j = 0;j < img.cols ;j++){
b = input[img.step * j + i ] ;
g = input[img.step * j + i + 1];
r = input[img.step * j + i + 2];
cout << b << g <<r;
}
}

当我运行它时,输出与我执行 cout << img; 时的输出不同;我认为这可能与新的 C++ 接口(interface)有关。如果是这样,我应该使用 step1 方法,有人可以告诉我如何更新我的代码以使用 step1 方法访问 BGR 值。我找不到在线文档。关于如何使用step1。在此先感谢您的帮助。

最佳答案

您的代码看起来基本上是正确的,但据我所知,您的顺序是错误的。您必须访问

value = data[img.step*ROW + COL] 但是您切换了行和列。

编辑:此外,您需要将 COL 乘以 channel 数:

value = data[img.step*ROW + #channels*COL + currentChannel]

尝试:

Mat img = imread("/home/w/d1",CV_LOAD_IMAGE_COLOR);
unsigned char *input = (unsigned char*)(img.data);

int i,j,r,g,b;
for(int i = 0;i < img.rows ;i++){
for(int j = 0;j < img.cols ;j++){
b = input[img.step * i + 3*j ] ; // 3 == img.channels()
g = input[img.step * i + 3*j + 1];
r = input[img.step * i + 3*j + 2];
cout << b << g <<r;
}
}

关于c++ - 使用 step 方法检索图像的 bgr 值的代码有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916959/

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