之前一直在matlab上用这个函数,现在转移到python上面使用
————————————————————————————————————
1、代码
I = cv2.cvtColor(I, cv2.COLOR_BGR2GRAY);
mser = cv2.MSER_create()
regions,boxes = mser.detectRegions(I)
for box in boxes:
x, y, w, h = box
cv2.rectangle(I, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2.imshow("box", I)
cv2.waitKey(0)
2、效果
————————————————————————————————————
在matlab当中,mser的方法中的输入特征包括:'ThresholdDelta'、'RegionAreaRange'等,一共四个参数,不过我只用到了这两个,强度阈值步长可以很好的控制特征数量,特征区域大小则规避很大一部分在特征大小的明显不符合当前目标条件的数据。
因此我想要在python中也对数据在算法运行过程中进行初步的筛选限制。
1、代码
mser = cv2.MSER_create(_min_area=400, _max_variation=0.7)
regions,boxes = mser.detectRegions(I)
2、结果
3、参数详解
————————————————————————————————————
由于mserdetectRegions函数只返回regions和boxes两个参数,所以其他数据需要通过regions获取
regions,boxes = mser.detectRegions(I)
im=I.copy()
for p in regions:
ellipse= cv2.fitEllipse(p)
cv2.ellipse(im, ellipse, (255, 255, 0), 2)
#ellipse当中的数据包括三行,第一行表示椭圆圆心,第二行表示长轴和短轴各自的长度,第三行表示椭圆的倾斜角度。
2、结果
————————————————————————————————————
参考网站:
(论坛)http://answers.opencv.org/question/19015/how-to-use-mser-in-python/
(实例)https://www.jianshu.com/p/1b9c275698c9
(实例)https://www.cnblogs.com/jkmiao/p/6797252.html
(函数详解)http://bytedeco.org/javacpp-presets/opencv/apidocs/org/bytedeco/javacpp/
opencv_features2d.MSER.html#create-int-int-int-double-double-int-double-double-int-
(图形拟合)https://blog.csdn.net/qq_30909117/article/details/79164055