gpt4 book ai didi

c++ - 通过 Mat::at 获取一个像素

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:48 26 4
gpt4 key购买 nike

我正在尝试从 Mat 对象获取像素。为了测试,我尝试在一个正方形上画一条对角线,并希望得到一条从左上角到右下角的完美直线。

for (int i =0; i<500; i++){
//I just hard-coded the width (or height) to make the problem more obvious

(image2.at<int>(i, i)) = 0xffffff;
//Draw a white dot at pixels that have equal x and y position.
}

然而,结果并不如预期。这是在彩色图片上绘制的对角线。 enter image description here这是灰度图片。 enter image description here有人看到问题了吗?

最佳答案

问题是您试图将每个像素作为 int(每像素图像 32 位)进行访问,而您的图像是 3 channel 无符号字符(每像素图像 24 位)或 1 channel 无符号字符(8每像素图像位)对于灰度图像。您可以尝试像这样访问灰度像素的每个像素

for (int i =0; i<image2.width; i++){
image2.at<unsigned char>(i, i) = 255;
}

或者像这样的颜色

for (int i =0; i<image2.width; i++){     
image2.at<Vec3b>(i, i)[0] = 255;
image2.at<Vec3b>(i, i)[1] = 255;
image2.at<Vec3b>(i, i)[2] = 255;
}

关于c++ - 通过 Mat::at 获取一个像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130692/

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