我正在做一个android项目,我必须检测一个标志(标志可以是不同的对比度,色调或饱和度),为此我使用Android的OpenCV-2.3.1直方图比较。标志的图像比较
我遵循的步骤如下;
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) 那么我裁剪所捕获的图像的每一帧的HIST值。裁剪图像的大小与存储图像的大小完全相同,并使用与上述相同的方法计算其直方图值。
3) 两个图像
double base_test2 = Imgproc.compareHist(hist_base1,hist_baseCamera1,Imgproc.CV_COMP_CHISQR);
的存储HIST值进行比较,我得到comparehist物有所值的。然而,问题是某些时候它为一些随机捕获的图像提供了很好的值,即不需要的。
所以现在我打算使用一些其他方法与直方图比较。我的标志由一个圆圈组成。
我的问题是::是否有任何方法,以便我可以找到捕获的图像由与存储的徽标的圆的大小完全相同的圆组成。
或者我应该使用的任何其他方法,或者我可以播放存储的通道,范围,histSize值?
我以前曾使用模板匹配,它的速度很慢和
我会很感激有这方面的光同样大小的图像相当困难。
细分似乎是一个更好的选择。虽然我从来没有在openCv中实现分割,我会试试这个。 – user1249358 2012-03-22 05:35:10