gpt4 book ai didi

opencv - 从CV_8UC1到OpenCV ConvertTo CV_32SC1

转载 作者:行者123 更新时间:2023-12-02 17:37:26 27 4
gpt4 key购买 nike

您好,我在3.4版中使用opencv,并且想要读取图像(* .pgm),然后将其转换为CV_32SC1。因此,我使用以下代码(部分):

img = imread(f, CV_LOAD_IMAGE_GRAYSCALE);
img.convertTo(imgConv, CV_32SC1);

问题如下,所有像素都转换为零,我不明白为什么。我正在检查(和 imshow("Image", imgConv);)
cout << static_cast<int>(img.at<uchar>(200,100));
cout << static_cast<int32_t>(imgConv.at<int32_t>(200,100)) << endl;

在我的示例中,这导致

74
74

我测试了图像的几个点,所有像素都完全相同,但是不应该将它们自动转换为32位范围,还是必须手动进行管理?

最佳答案

您必须手动进行管理。这就是cv::Mat::convertTo()具有另一个参数,即scale的原因。例如,如果您想从CV_8U转换为CV_32F,通常

img.convertTo(img2, CV_32F, 1.0/255.0);

缩放到典型的浮点值范围。我不确定您对 CV_32SC1的期望范围是多少,因为您正从无符号转换为有符号,但是只需添加您认为正确的比例因子即可。

关于opencv - 从CV_8UC1到OpenCV ConvertTo CV_32SC1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053412/

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