我使用OpenCV和C ++设计了一个水平1D向量形式的过滤器。向量由浮点数据组成。将灰度图像的原始uchar数据与该浮动矢量相乘作为1维窗口以获得结果。但是,我没有得到正确的结果。
当矢量元素与图像像素值相乘时,超出范围0-255,我认为这会导致问题。
有没有办法将这个浮动数据强制转换为uchar以获得正确的结果?
我现在正在使用Img.at<uchar> = (uchar)(floatVector)
。
由于
答案 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))