python+opencv实现文字颜色识别与标定

2023-11-02

        最近接了一个比较简单的图像处理的单子,花了一点时间随便写了一下:

 数据集客户没有是自己随便创建的:

 程序如下:

"""
    Code creation time:September 11, 2021
    Author:PanBo
    Realize function:It mainly realizes the recognition and calibration of fonts with different colors
"""
import numpy as np
import cv2 as cv

font = cv.FONT_HERSHEY_SIMPLEX
lower_red = np.array([0, 120, 120])
hight_red = np.array([10, 255, 255])
#
lower_black = np.array([0, 0, 0])
height_black = np.array([144, 144, 144])

lower_yellow = np.array([10, 230, 230])
height_yellow = np.array([35, 255, 255])

frame = cv.imread("test.png")
cv.namedWindow("test_image", cv.WINDOW_AUTOSIZE)
cv.imshow('test_image', frame)

img_hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
mask_red = cv.inRange(img_hsv, lower_red, hight_red)
mask_black = cv.inRange(img_hsv, lower_black, height_black)
mask_yellow = cv.inRange(img_hsv, lower_yellow, height_yellow)

cv.namedWindow("mask_red", cv.WINDOW_AUTOSIZE)
cv.imshow("mask_red", mask_red)
cv.namedWindow("mask_black", cv.WINDOW_AUTOSIZE)
cv.imshow("mask_black", mask_black)
cv.namedWindow("mask_yellow", cv.WINDOW_AUTOSIZE)
cv.imshow("mask_yellow", mask_yellow)

kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
mask_yellow = cv.morphologyEx(mask_yellow, cv.MORPH_OPEN, kernel)
cv.namedWindow("mask_yellow_open", cv.WINDOW_AUTOSIZE)
cv.imshow("mask_yellow_open", mask_yellow)

mask_yellow = cv.morphologyEx(mask_yellow, cv.MORPH_CLOSE, kernel)
cv.namedWindow("mask_yellow_close", cv.WINDOW_AUTOSIZE)
cv.imshow("mask_yellow_close", mask_yellow)

mask_black = cv.medianBlur(mask_black, 3)
mask_red = cv.medianBlur(mask_red, 3)
mask_yellow = cv.medianBlur(mask_yellow, 3)
# cv.imshow(" ", mask_green)

cnts1, hierarchy1 = cv.findContours(mask_black, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)
cnts2, hierarchy2 = cv.findContours(mask_red, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)
cnts3, hierarchy3 = cv.findContours(mask_yellow, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)

for cnt in cnts1:
    (x, y, w, h) = cv.boundingRect(cnt)
    cv.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 0), 2)
    cv.putText(frame, 'black', (x, y-5), font, 0.7, (0, 0, 25),2)
for cnt in cnts2:
    (x, y, w, h) = cv.boundingRect(cnt)
    cv.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
    cv.putText(frame, 'red', (x, y - 5), font, 0.7, (0, 0, 255), 2)

for cnt in cnts3:
    (x, y, w, h) = cv.boundingRect(cnt)
    cv.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
    cv.putText(frame, 'yellow', (x, y - 5), font, 0.7, (0, 0, 255), 2)

cv.namedWindow("output", cv.WINDOW_AUTOSIZE)
cv.imshow("output", frame)
cv.waitKey(0)

首先给定字体颜色的上下阈值,然后提取出红色、黑色以及黄色的字体如下所示:

检测出原始图像中存在的红色字体的为四和五

 检车出原始图像中存在的黑色字体是一和大

 检测出原始图像中存在黄色字体的是七和九

 但是通过yellow字体检测的过程中发现有一些椒盐噪声需要去剔除,因此做了一下中值滤波

但是效果不好有做一个形态学操作——开操作,结果如下:

 但是发现了七和九发生了断层现象如果进行矩形标定的话会出现两个矩形,因此又做了一下形态学操作中的——闭操作结果如下:

 经过闭操作我们发现七处的裂缝没有了但是九还是有,这个是由于设置的yellow上下阈值导致的。

后面进行矩形标定如下所示:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python+opencv实现文字颜色识别与标定 的相关文章

随机推荐

  • virtualbox无法创建64虚拟机的解决办法

    最近打算学习一下hadoop 需要用以虚拟机 由于vmware太大 故选择了oracle的virtualbox 结果装上virtualbox后只能创建32位的虚拟机 如下图 在网上百度了一把 说是需要 改Bioss的设置 进入securit
  • MATLAB打开.m文件乱码解决办法

    Matlab打开 m文件出现中文乱码问题 是因为Matlab存在两种编码格式 GBK和UTF 8 而不同版本的Matlab编码格式可能不统一 因此在不同版本的Matlab打开文件 由于编码格式的改变 会导致注释乱码 1 查看你的Matlab
  • 多态案例三-电脑组装

    案例描述 电脑主要组成部件为 CPU 用于计算 显卡 用于显示 内存条 用于存储 将每个零件封装出抽象基类 并且提供不同的厂商生产不同的零件 例如Intel厂商和Lenovo厂商创建电脑类提供让电脑工作的函数 并且调用每个零件工作的接口测试
  • finetune一个GPT3模型

    过程其实挺简单的 首先得注册一个账号获取token 我是叫在美国的朋友注册了一个 注册好账号后 有18美金的试用额度 基本可以完成好几次模型训练了 除了模型训练需要收费之外 大概1000个token的费用是0 02美金 设置好OPENAI
  • 浮动窗口代码(带关闭按钮+全屏漂浮)

    div div
  • Linux安装anaconda与环境变量的配置

    Linux安装anaconda的步骤 下载anaconda的安装包 后缀名为 sh 然后在root用户下执行bash XXX sh Linux配置anaconda环境变量 1 命令的路径在 usr local anaconda3 bin 2
  • 解决VM虚拟机启动后假死

    一 开机后黑屏假死 管理员cmd 输入netsh winsock reset 回车 重启系统 二 启动后假死 关闭本机防火墙
  • 数字孪生技术在各个领域得到广泛应用

    数字孪生是指将物理实体 如产品 设备 建筑 城市等 与其数字模型进行连接 通过实时数据交换和仿真模拟等技术手段 将实际的运行状态 性能 行为模式等信息反映到数字模型中 实现对其进行监测 分析 优化和预测等 实际的物理实体和数字模型之间通过感
  • 一、Docker入门

    最小安装centos7之后无法联网 无法查看ip的解决方法 cd etc sysconfig network scripts 查看目录下的文件 修改ifcfg ens33文件 ONBOOT yes 修改之后执行 service networ
  • Sprin boot 加载位置顺序

    配置文件的加载位置 Spring boot 启动会扫描一下位置的application properties或者application yml文件作为Spring boot的默认配置文件 file config 项目根目录下的config文
  • 【数据集制作】VOC2007格式数据集制作和处理教程(Faster-RCNN模型标准输入)

    说明 此次案例是制作VOC2007数据集的制作教程 用于目标检测 此次数据集处理可用于Faster RCNN YOLOv3等网络进行目标检测模型的标准输入 VOC2007数据集结构 VOC2007数据集结构如下 VOC2007 Annota
  • 灵魂拷问!GPT-4来了!人类自媒体博主存在的意义是什么?

    大家有没有想过一个问题 当某某领域大v 的文章或者视频都是GPT 4创作出来的时候 那么我们这些低产能的人类自媒体博主存在的意义又是什么呢 拿什么跟GPT 4进行竞争呢 想到这个问题是不是会有些伤感 GPT 4 VS 人类博主 首先我们先比
  • 左神提升6:暴力递归改动态规划

    内容 讲述暴力递归和动态规划的关系 去重的过程 记忆化搜索 傻缓存 动态规划都可以由暴力递归改进过来 解决动态规划的套路 常见的尝试模型 设计尝试过程的原则 本节是暴力递归到动态规划的总纲 很重要 后续的课都是在讲述这一系列的套路 1 尝试
  • Python多进程写日志ConcurrentLogHandler

    文档 https pypi org project ConcurrentLogHandler 0 9 1 这个类库是通过文件锁实现写日志进程安全的 但是只能通过文件大小控制切割 不能通过时间分割文件 demo import time imp
  • 2023年数据要素交易指数研究报告

    报告紧扣数据要素市场化发展主线 深入分析数据要素交易现状 从构建规范高效的数据交易场所入手 坚持理论指导导向 实践需求导向 共性特征导向 发展趋势导向 围绕数据场内交易需要 分析构建了数据要素交易指数指标体系 并在此基础上提出数据要素交易指
  • zabbix客户端错误:no active checks on server [192.168.1.107:10051]: host [ ] not found

    查看zabbix agentd log时出现下列错误 root www tail var log zabbix zabbix agentd log 10526 20170506 154012 832 no active checks on
  • 解决Maven:com.oracle:ojdbc7-12.1.0.2.jar在pom文件中无法下载问题

    一 pom文件中有ojdbc依赖 但是一直无法下载 导致打包出错 二 解决方法 1 配置Maven的环境变量 此处省略 检查maven配置成功 win R 在doc窗口输入mvn v 如下则说明Maven 的环境变量配置成功 2 自行下载o
  • 【原创】QString 函数 replace()indexOf()、 lastindexOf()

    1 替换函数 示例 QString x Say yes QString y no x replace 4 3 y x Say no 应用 将 002 jpg 7位 替换为 s save002 jpg 1 13位 QString x1 fil
  • swc-loader Segmentation fault “$NODE_EXE“ “$NPM_CLI_JS“ “$@“

    webpack swc swc还不是很稳定 在swcrc 中有配置plugins 时 swc 转换 node modules 会报错 环境 swc cor 1 3 62 swc loader 0 2 3 swc plugin vue jsx
  • python+opencv实现文字颜色识别与标定

    最近接了一个比较简单的图像处理的单子 花了一点时间随便写了一下 数据集客户没有是自己随便创建的 程序如下 Code creation time September 11 2021 Author PanBo Realize function