【问题标题】:cvCanny and float 32 bit (IPL_DEPTH_32F) problemcvCanny 和浮点 32 位 (IPL_DEPTH_32F) 问题
【发布时间】:2010-12-08 11:25:32
【问题描述】:

我对@9​​87654321@s cvCanny(...) 及其可以处理的图像数据类型有一些问题。好吧,也许你们知道解决方案。

我有一个 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 :))

【问题讨论】:

    标签: c++ image-processing opencv edge-detection itk


    【解决方案1】:

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

    【讨论】:

    • OpenCV 自诩为能够看到的软件......你能看到多少 8 位深度......我不明白。感谢您提供缩放提示。
    • 好吧,Canny 边缘检测器应该用于灰度图像,所以 8 位应该足够了。无论如何,如果您想请求 OpenCV 上的功能,您应该去这里:sourceforge.net/tracker/?group_id=22870&atid=376680 ...
    猜你喜欢
    • 2014-11-22
    • 2020-09-04
    • 2011-12-14
    • 2010-12-12
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多