使用 EMGU CV 进行棕色和蓝色物体检测
Brown and Blue Color Object detection using EMGU CV
我正在使用模板匹配来检测棕色图像并将阈值设置为 0.7 以接受正确匹配。我为棕色图像创建了一些模板,但每次我用模板检查新的棕色图像时,我都会得到 0.4 的低分,即使图像差异很小可能是一些斑点或光照。我尝试了很多但无法检测到。由于每次分数不同,需要添加很多模板才能实现。
我正在将图像转换为灰度并进行一些预处理
Image<Gray, byte> grayFrameimgModelROIvariable = ((Image<Bgr, byte>)imgModelROIPic.Image).Convert<Gray, byte>();
Image<Gray, byte> grayFrameimgInspTemplateVariable = ((Image<Bgr, byte>)imgInspectedROIPic.Image).Convert<Gray, byte>();
grayFrameimgModelROIvariable.PyrDown();
grayFrameimgModelROIvariable.PyrUp();
grayFrameimgInspTemplateVariable.PyrDown();
grayFrameimgInspTemplateVariable.PyrUp();
grayFrameimgModelROIvariable._SmoothGaussian(3);
grayFrameimgInspTemplateVariable._SmoothGaussian(3);
请帮忙
@Shabbir,
您是否正在使用灰度图像来尝试区分棕色和蓝色?如果是这样,IMPO,那可能不是最好的解决方案。如果是我,我会使用 HSV 色标的 H(色调)来确定然后切换到灰度。
这篇文章Color spaces in OpenCV可能会有一些用处。
道格
我正在使用模板匹配来检测棕色图像并将阈值设置为 0.7 以接受正确匹配。我为棕色图像创建了一些模板,但每次我用模板检查新的棕色图像时,我都会得到 0.4 的低分,即使图像差异很小可能是一些斑点或光照。我尝试了很多但无法检测到。由于每次分数不同,需要添加很多模板才能实现。
我正在将图像转换为灰度并进行一些预处理
Image<Gray, byte> grayFrameimgModelROIvariable = ((Image<Bgr, byte>)imgModelROIPic.Image).Convert<Gray, byte>();
Image<Gray, byte> grayFrameimgInspTemplateVariable = ((Image<Bgr, byte>)imgInspectedROIPic.Image).Convert<Gray, byte>();
grayFrameimgModelROIvariable.PyrDown();
grayFrameimgModelROIvariable.PyrUp();
grayFrameimgInspTemplateVariable.PyrDown();
grayFrameimgInspTemplateVariable.PyrUp();
grayFrameimgModelROIvariable._SmoothGaussian(3);
grayFrameimgInspTemplateVariable._SmoothGaussian(3);
请帮忙
@Shabbir, 您是否正在使用灰度图像来尝试区分棕色和蓝色?如果是这样,IMPO,那可能不是最好的解决方案。如果是我,我会使用 HSV 色标的 H(色调)来确定然后切换到灰度。
这篇文章Color spaces in OpenCV可能会有一些用处。
道格