1793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#!/usr/bin/env python 2793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 3793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler''' 4793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerMSER detector demo 5793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler================== 6793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 7793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerUsage: 8793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler------ 9793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler mser.py [<video source>] 10793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 11793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerKeys: 12793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler----- 13793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler ESC - exit 14793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 15793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler''' 16793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 17793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport numpy as np 18793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport cv2 19793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport video 20793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 21793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerif __name__ == '__main__': 22793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler import sys 23793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler try: 24793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler video_src = sys.argv[1] 25793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler except: 26793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler video_src = 0 27793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 28793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler cam = video.create_capture(video_src) 29793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler mser = cv2.MSER_create() 30793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler while True: 31793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler ret, img = cam.read() 32793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 33793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler vis = img.copy() 34793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 35793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler regions = mser.detectRegions(gray, None) 36793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions] 37793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler cv2.polylines(vis, hulls, 1, (0, 255, 0)) 38793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 39793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler cv2.imshow('img', vis) 40793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if 0xFF & cv2.waitKey(5) == 27: 41793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler break 42793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler cv2.destroyAllWindows() 43