gpt4 book ai didi

c++ - RGB 归一化给出黑色图像

转载 作者:太空狗 更新时间:2023-10-29 21:34:37 26 4
gpt4 key购买 nike

在这里,我正在尝试标准化 RGB 图像。

这是我的代码。

cv::Mat channels[3], normalize_rgb;
split(image, channels);

for (int i = 0; i < image.size().height; i++)
{
for (int j = 0; j < image.size().width; j++)
{
int b = (int)(image).at<cv::Vec3b>(i, j)[0];
int g = (int)(image).at<cv::Vec3b>(i, j)[1];
int r = (int)(image).at<cv::Vec3b>(i, j)[2];

double sum = b + g + r;
double bnorm = b / sum * 255;
double gnorm = g / sum * 255;
double rnorm = r / sum * 255;

channels[0].at<uchar>(i, j) = bnorm;
channels[1].at<uchar>(i, j) = gnorm;
channels[2].at<uchar>(i, j) = rnorm;
}
}
merge(channels, 3, normalize_rgb);
normalize = normalize_rgb.clone();

问题: 归一化 r、g 后,b 值给我的值非常小,变为 0。因此我得到黑色图像。

任何人都可以帮我找出问题。谢谢

最佳答案

首先将图像更改为double。它是黑色的,因为当您将 int 除以 int 时,您得到零。然后你试图设置 uchar = double 这是完全错误的。

尝试:double bnorm = double (b)/sum * 255;

关于c++ - RGB 归一化给出黑色图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45809886/

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