基于C#opencvsharp的图像位移检测及相似点标注
又是一个要用C#的图像处理算法,网上有一些关于SIFT方法下的相似点检测,实测效果不错的,难得还是opencvsharp的。
客户这里要求用两种方法去检测提取相似点,并得出图片相对距离。
第一种我用了SIFT,网上已经有了,不赘述。
第二种采用了光流金字塔,其实这两种方法opencvsharp里已经都集成好了,调用一下就行。
主要是CalcOpticalFlowPyrLK函数要求先得到前一幅图的特征点,不像SIFT法可以单独对每个图像检测特征点然后在匹配。
这边我用了GoodFeaturesToTrack函数提取特征点。这个是比较常用的,参数设置搜一搜就有,不赘述了。
注意两张图片的尺寸要相同。
Mat previmg = new Mat(); Mat nextimg = new Mat();
Cv2.CvtColor(PrevimgColo, previmg, ColorConversionCodes.BGR2GRAY);
Cv2.CvtColor(NextimgColo, nextimg, ColorConversionCodes.BGR2GRAY);
// 特征点检测(角、点)
const int MAX_Count = 500;
const int Win_size=10;
Point2f[