3

我对OpenCVcvCanny(...)和它可以处理的 Image 数据类型有一些问题。好吧,也许你们/女孩知道一个解决方案。

我有一个 32 位浮点图像,我想对其执行 cvCanny。问题是 cvCanny 只能处理“IPL_DEPTH_8S”或 U(有符号/无符号短),或者至少这是我怀疑的。OpenCV 手册没有说明它可以处理多少,并且 cv/cvcanny.cpp 中的这一行并没有引起我的希望:

...
if( CV_MAT_TYPE( src->type ) != CV_8UC1 ||
CV_MAT_TYPE( dst->type ) != CV_8UC1 )
CV_ERROR( CV_StsUnsupportedFormat, "" );
...

我拥有的图像是灰度/单通道 float32 位,图像中的值介于 0.0 和 16.0 之间。将我的 float32 转换为 unsigned short 并没有多大帮助,因为这些值会失去它们的精度,而且我会错过 OpenCV 精明的边缘。

你们/女孩碰巧知道我的问题的解决方案吗?(除了使用ITK :) )

4

1 回答 1

3

抱歉,由于cvCanny仅支持单通道 8 位图像,我唯一能想到的就是将图像中的每个值缩放255/16为类型的新图像,CV_8UC1以便它的范围从0 - 255最小化您丢失的精度。

于 2009-10-20T19:28:08.470 回答