opencv-python 进行识别(上)

对于图像清晰,遮挡不严重的仪表盘图像,采用代码量小,可快速识别的计算机视觉传统库--opencv-python就能很好地解决问题。由于它的简单性和代码可读性,使程序员可以用较少的代码行表达想法,而不会降低可读性,同时它提取物体边缘能力强,能很好获取仪表盘中指针,表盘区域信息。

opencv-python库的安装

我相信大部分计算机视觉人入门是从opencv开始,虽然后面使用深度学习逐渐增多,但不可否认的是opencv是我们处理图像的得力小助手。下面我介绍一下opencv-python库的安装与使用。

假如你的电脑未安装conda库管理工具,强烈建议你安装一下,它创建虚拟环境能更好地分出每个项目的工作库,避免你项目中环境混乱。

1.有conda情况:

step1:创建虚拟环境:conda create -n +你的环境名(可以像我一样conda create -n opencv);

step2:进入虚拟环境:conda activate opencv;

step3:下载库资源:pip install pip install opencv-python,出现successfully证明你成功了,假如出现下载超时,可以在命令后加国内镜像源:-i mirrors.aliyun.com/pypi/simple...

2.无conda情况:

step1:进入sourceforge.net/projects/op...

step2:解压缩并将'opencv/build/python/2.7'路径下的cv2.pyd复制到python环境下的lib/site-packages

测试环境是否安装:

python 复制代码
import cv2 as cv  
print( cv.__version__ )

下面进入正题,如何对仪表盘进行处理:

仪表盘识别

对于仪表盘识别,我大致分为这三步:

  1. 对'0'刻度的识别;

  2. 对表盘区域的识别,计算出表盘中心;

  3. 对指针的识别;

    对于'0'刻度的识别,我采用了模版匹配的方法,模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法,cv.matchTemplate()中含有几种比较方法,大家可以根据自己实际情况进行选择比较方法,需要注意的是方法是TM_SQDIFF或TM_SQDIFF_NORMED,最佳匹配结果应该取最小值。

    python 复制代码
    import cv2
    img = cv2.imread('')#你的仪表盘图片
    template = cv2.imread('F:/picturecut/example2.jpeg')#你的'0'刻度图片
                w, h = template.shape[:-1]
                methods = ['cv2.TM_CCORR_NORMED']
                for meth in methods:
                    method = eval(meth)
                    res = cv2.matchTemplate(img, template, method)
                    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    
                    if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
                        top_left = min_loc
                    else:
                        top_left = max_loc
                        bottom_right = (top_left[0] + w, top_left[1] + h)
                        zero = ((top_left[0] + bottom_right[0]) // 2, (top_left[1] + bottom_right[1]) // 2)
                        cv2.circle(img, zero, 5, (0, 0, 255), -1)
                    cv2.imshow('result',img);
                    cv2.waitKey(0)

    到此,你可以看到出现了标记'0'刻度的图像。

相关推荐
fthux26 分钟前
装闭 RenoPit 源码解析(09):AnalysisEngine装修闭坑分析主流程
人工智能·ai·开源·github·open source·renopit
敏编程26 分钟前
开源项目 NextBand:探索融合健康传感、语音交互与 AI Agent 的下一代可穿戴设备
人工智能
ovO43 分钟前
我按下“发送”之后:DeepSeek Harness 如何把一次请求变成 1,177 个增量片段
人工智能·开源·deepseek
昨日之日20061 小时前
LTX-2.5:更清晰、更可控、同步音画、多镜头连贯的AI视频神器
人工智能·音视频
九硕智慧建筑一体化厂家1 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
江厌011 小时前
本地部署DeepSeek显卡怎么选?我把显存计算公式和实测记录写下来了
人工智能·百度·联想工作站·代理商推荐·渠道对比·工作站
小席是个热心肠1 小时前
AI相关的自我学习
java·人工智能·学习
FII工业富联科技服务2 小时前
工业AI自治的演进趋势:从内容生成到Agent驱动的工厂运营范式转变
人工智能
云和数据.ChenGuang2 小时前
fastapi的参数剖析
人工智能·深度学习·机器学习·语言模型·状态模式·fastapi
日常筹谋记2 小时前
技术研究:数据中心HVDC系统直流保护配合与ABB电气产品参数解析
人工智能·创业创新·业界资讯