Skip to content

Latest commit

 

History

History
34 lines (23 loc) · 1.32 KB

3.2.md

File metadata and controls

34 lines (23 loc) · 1.32 KB

3.2 常见检测:条形码二维码

斑点检测

OpenCV 自带了斑点检测的类,SimpleBlobDetector。可以根据如下方式检测,具体原理看 图片

  1. 颜色、大小:blobColor=0 表示黑色的点,颜色只适用于二值图像;minArea, maxArea 表示斑点的大小范围;
  2. 圆形程度:minCircularity, maxCircularity;这个是通过(4pi)*(面积/周长平方)来获取的,如正方形就是 0.785;
  3. 凸性:minConvexity, maxConvexity;这个是斑点面积/凸包的面积;
  4. 惯性比:minInertiaRatio, maxInertiaRatio;这个其实就是衡量伸长程度,是斑点主轴与次轴长度的比值,圆形是 1,直线是 0;
import cv2

img = cv2.imwrite('./test.png', -1)

# 创建一个SimpleBlobDetector对象
params = cv2.SimpleBlobDetector_Params()

# 设置过滤器的参数
params.filterByArea = True
params.minArea = 1500

# Filter by Circularity
params.filterByCircularity = True
params.minCircularity = 0.1

blob_detector = cv2.SimpleBlobDetector.create(params)
keypoints = blob_detector.detect(img)

条形码二维码

OpenCV 中自带了二维码和条形码的检测,下面直接给出代码和简单的解释。但是没有必要了,直接用更好的 pyzbar,更香:https://github.com/NaturalHistoryMuseum/pyzbar