在OpenCV中将float转换为unsigned char

时间:2013-01-13 14:57:01

标签: c++ image-processing opencv computer-vision

我使用OpenCV和C ++设计了一个水平1D向量形式的过滤器。向量由浮点数据组成。将灰度图像的原始uchar数据与该浮动矢量相乘作为1维窗口以获得结果。但是,我没有得到正确的结果。

当矢量元素与图像像素值相乘时,超出范围0-255,我认为这会导致问题。

有没有办法将这个浮动数据强制转换为uchar以获得正确的结果?

我现在正在使用Img.at<uchar> = (uchar)(floatVector)

由于

2 个答案:

答案 0 :(得分:1)

我会建议你在成倍增加后输入... ...将你的uchar图像矩阵转换为CV_32FC1(因为你说它的灰度图像所以channel = 1)....使用过滤器对图像进行卷积,然后将值转换为uchar以显示可能是..

答案 1 :(得分:0)

你想在float类型中执行乘法,并且只在最后,转换回unsigned char。不要忘记将浮点矢量标准化(所有值加起来为1)

所以基本上你想要

Data.at(coordinates)=(unsigned char) (floatVector(0)*(Data.at(coord0)+ ... + FloatVector(last)* Data.at(coordLast))