2011-11-11 239 views
3

在canny边缘检测器中输入所需的是灰色图像...颜色边缘检测+ opencv

open-cv中是否有任何直接颜色边缘检测器功能?或者,如果我转换为灰度并使用canny,它是否一样?

我问这个是因为我需要看到彩色图像的边缘检测图以作进一步处理......那是我需要计算彩色图像中的所有水平和垂直线段......因此我在想首先计算图像的所有边缘......

有人能帮助我,我应该怎么进步?

回答

5

马蒂亚斯Odisio是,你甚至纠正我正确的感谢和你解释的理由非常好。然后将溶液。将每个颜色频谱执行边缘检测:

Image<Bgr, Byte> img = new Image<Bgr, Byte>(open.FileName); 
Image<Bgr, Byte> Result = new Image<Bgr, Byte>(img.Size); 
Result[0] = img[0].Canny(new Gray(10), new Gray(60)); 
Result[1] = img[0].Canny(new Gray(10), new Gray(60)); 
Result[2] = img[0].Canny(new Gray(10), new Gray(60)); 

希望这有助于,

克里斯

+0

我将在所有3个颜色通道单独执行边缘检测之前减薄:检测边沿时,在所有通道上执行MAX操作以获得尽可能多的边缘,然后才执行细化和滞后。 –

+0

嗨,是的,这是一个更好的方法,但需要重新编写Canny方法来支持它。不幸的是,opencv canny边缘检测方法仅支持灰度图像,并会自动执行细化和滞后阈值处理。如果我记得玩过它,应该很容易调整opencv代码,但恐怕我没有时间测试和提交修订版。 – Chris