OpenCV 表盘指针自动读数表盘指针自动读数
前段时间参加了一个表盘指针读数的比赛,今天来总结一下
数据集一共有一千张图片:
方法一:径向灰度求和方法一:径向灰度求和
基本原理基本原理:
将图像以表盘圆心转换成极坐标,然后通过矩阵按行求和找到二值图最大值即为指针尖端
导入需要用到的包导入需要用到的包
import cv2 as cv
import numpy as np
import math
from matplotlib import pyplot as plt
import os
图像预处理图像预处理
去除背景:利用提取红色实现去除背景:利用提取红色实现
def extract_red(image):
"""
通过红色过滤提取出指针
"""
red_lower1 = np.array([0, 43, 46])
red_upper1 = np.array([10, 255, 255])
red_lower2 = np.array([156, 43, 46])
red_upper2 = np.array([180, 255, 255])
dst = cv.cvtColor(image, cv.COLOR_BGR2HSV)
mask1 = cv.inRange(dst, lowerb=red_lower1, upperb=red_upper1)
mask2 = cv.inRange(dst, lowerb=red_lower2, upperb=red_upper2)
mask = cv.add(mask1, mask2)
return mask