【发布时间】:2012-04-05 22:48:23
【问题描述】:
我正在做一个 android 项目,我必须检测一个标志(标志可以是不同的对比度、色调或饱和度),因为我正在使用 OpenCV-2.3.1 for android 的直方图比较。
我所遵循的步骤如下;
1)计算存储图像的历史值
private List<Integer> histSize;
private List<Float> ranges;
histSize.add(50);
histSize.add(60);
histSize.add(10);
ranges.add(0f);
ranges.add(256f);
ranges.add(0f);
ranges.add(180f);
ranges.add(0f);
ranges.add(256f);
channels.add(0);
channels.add(1);
channels.add(2);
hsv_base1=new Mat();
Imgproc.cvtColor(image1,hsv_base1, Imgproc.COLOR_BGR2HSV);
hsv_base.add(hsv_base1);
Imgproc.calcHist(hsv_base, channels,new Mat(), hist_base, histSize, ranges,false);
2) 然后我每帧裁剪捕获的图像。裁剪后的图像大小与存储图像的大小完全相同,并使用与上述相同的方法计算其直方图值。
3) 比较两个图像的存储历史值
double base_test2 = Imgproc.compareHist(hist_base1,hist_baseCamera1,Imgproc.CV_COMP_CHISQR);
我得到了 comparehist 的良好价值。 然而问题是有时它为一些随机捕获的图像提供了良好的值,即不需要的。
所以现在我打算使用其他一些方法进行直方图比较。我的标志由一个圆圈组成。
我的问题是:: 有什么方法可以让我找到捕获的图像由与存储徽标的圆圈大小完全相同的圆圈组成。
或者我应该使用的任何其他方法,或者我可以使用通道、范围、histSize 的存储值?
我之前使用过模板匹配,对于相同大小的图像,它非常缓慢且非常困难
我将不胜感激。
【问题讨论】: