gpt4 book ai didi

opencv - imshow opencv不显示图像

转载 作者:行者123 更新时间:2023-12-02 17:40:30 28 4
gpt4 key购买 nike

这是我的代码,当我尝试使用imshow时图像为黑色

    cv::Mat src(height, width, CV_16U);
for (int i = 0; i < width* height; ++i)
{
src.at<unsigned short>(i) = input_image[i]/1023;
}
cv::Mat temp;
cv::resize(src, temp, cv::Size(), 0.3, 0.3, cv::INTER_LINEAR);
cv::imshow("image1", temp);
cv::waitKey(0);

cv::Mat imageData;
cv::cvtColor(src, imageData, cv::COLOR_BayerGR2RGB);

cv::resize(imageData, temp, cv::Size(), 0.3, 0.3, cv::INTER_LINEAR);
cv::imshow("image1", temp);
cv::waitKey(0);

如果我将代码更改为
cv::Mat src(height, width, CV_32F);
for (int i = 0; i < width* height; ++i)
{
src.at<float>(i) = input_image[i]/1023;
}

enter image description here

您能解释一下如何显示图像吗?

最佳答案

由于input_image处于0..1023范围内,通过除以1023,您将获得0到1之间的值。将其强制转换为无符号整数类型时,图像全为零。 (它可能会将其中一些取整为1,但是无论如何这实际上是不可见的。)

要获得使用整个unsigned short范围的数字,您需要乘以65535:

src.at<unsigned short>(i) = input_image[i]/1024*65536;

要么
src.at<unsigned short>(i) = input_image[i]*64;

关于opencv - imshow opencv不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549485/

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