#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
using namespace cv;
using namespace std; //不加这个的话, 就要 std::cout这么写
int main (int argc, char * argv[])
{
Mat img,gray;
img = imread("1.jpg",1);
cvtColor( img, gray, CV_BGR2GRAY );
vector<KeyPoint> keyPoint;
MserFeatureDetector mserdetecter;//这是默认参数,类似预处理的过程,将所有mser的中心带你都圈出来。
MserFeatureDetector mserdetecter(4, 500,2000,0.7,0.3);//经过测试,他的参数果然和mser一样
mserdetecter.detect(gray,keyPoint);
drawKeypoints(gray,keyPoint,img,Scalar::all(-1),1);//gray是输入图像,所有的点,绘制点的图像,标记方式,不详。
vector<vector<Point>> regions;
MSER mser(4, 500,2000,0.7,0.3) ;//参数1:△,参数2:检测到的组块面积的最小范围,参数3:检测到的组块面积的最大范围,
//参数4:为最大的变化率,即如mser公式中的q(i)。小于该值,则被认为是最大稳定极值区域;
//参数5:为稳定区域的最小变换量。
mser(gray, regions, Mat());
namedWindow("img",WINDOW_AUTOSIZE);
imshow("img",img);
//绘制mser圈圈
for (int i = 0; i<regions.size();i++)
{
ellipse(img,fitEllipse(regions[i]),Scalar(0,0,255));
}
namedWindow("img2",WINDOW_AUTOSIZE);
imshow("img2",img);
waitKey(0);
return 0;
}
C++与opencv学习随记 1 - mser部分
最新推荐文章于 2024-06-26 09:53:45 发布