我对OpenCV比较新,遇到了一个问题。我有一个输入图像并希望将其从类型CV_8U转换为CV_32F。
对于某些图像,通过input.convertTo(output, CV_32F)
可以很好地工作,但对于其他图像,输出仅会给出完全白色的图像。
通道数、维度以及深度都相等,问题在哪里?
我认为结果是正常的。
当你使用convertTo
将CV_8U1转换为CV32F1时,像素值(例如,255)变为255.0。
但当你试图`imshow'这个结果图像时,命令希望所有像素值都在0.0和1.0之间。如果不对图像进行重新缩放,图像看起来会全是白色。
所以如zzz所指出的那样,这将解决问题(感谢他)。
input.convertTo(output, CV_32F, 1.0/255.0)
该方法将源像素值转换为目标数据类型。最后应用saturate_cast<>以避免可能的溢出
。是否有关于失败的图像导致saturate_cast<>失控的问题? - im so confused