开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1053|回复: 40
收起左侧

[易语言纯源码] (VC6精编)QSOCR—OCR/找图找色/opencv支持库

[复制链接]
结帖率:0% (0/1)
发表于 5 天前 | 显示全部楼层 |阅读模式   湖南省娄底市
分享源码
界面截图: -
是否带模块: -
备注说明: -
QSOCR—OCR/找图找色/opencv5支持库
一个支持库,把 OpenCV 5.0 + ONNX Runtime + PaddleOCR + YOLO + dddd 验证码 + 找图找色 全部静态打包给易语言直接调用。无需安装任何运行库、无需附带一堆 DLL —— 一个 .fne 文件即可上手。


这是什么
QSOCR 用 VS2022 (现代 C++) 写真正的算法实现,再用 VC6 编一层易语言 把它桥接进易语言。这样易语言就能静态链接现代编译器的产物,既拿到了现代 C++ + OpenCV 5.0 的能力,又保持易语言一贯的「拖一个 .fne 就能用」的简单。
实现 DLL 经 内嵌在 .fne 里、运行时内存加载,所以发布给别人时只有一个 .fne(动态)或一个 .lib(静态)**,不会散落一堆依赖文件。


特点速览
  • 真功能,不是演示桥 —— 256 条命令 / 23 个数据类型,覆盖图像处理、OCR、目标检测、验证码、模板匹配与找色五大领域。
  • 零外部依赖 —— OpenCV 5.0、ONNX Runtime 1.2*、PaddleOCR 全部以静态库 /MT 链入,目标机不用装任何 VC 运行库 / Python / CUDA。
  • 找图找色 —— QS匹配器 (QSMatcher) 提供找图、找色、多色、透明/Alpha/边缘/旋转/缩放匹配、比图,接口贴近自动化老用户的习惯,且全系列支持 ROI 区域限定。
  • 一库吃下整条视觉链路 —— 从「读图 → 预处理 → 找目标 / OCR / 分类 / 检测 → 画框输出」一条龙,中间数据都是同一个 QSMat 对象,不用反复转格式。
  • 升级不破坏老程序 —— 命令序号 append-only 冻结,新版本只增不改、不重排,老 .e 工程升级后无需重新接线。
  • CPU / DML 双变体 —— 纯 CPU 版零额外依赖即可跑;DML 版借 DirectX 12 (DirectML) 做 GPU 推理加速,按需取用。
  • 纯 32 位 · 单文件 —— 全程 Win32 /MT,一个 .fne 走天下。



能做什么影像处理 — QSMat / QS轮廓集 (QSContours)
基于 OpenCV cv::Mat 的句柄类,一个对象贯穿全程。约 70 个方法,涵盖:
类别
代表命令(中文名 / 英文对照)
能力

载入/保存/属性加载文件 (LoadFile) 加载字节集 (LoadBytes) 保存文件 (SaveFile) 复制 (Clone)文件/字节集双向读写、克隆、查行列通道深度
像素读写取像素 (At) 置像素 (SetAt) 取像素数据 (RawData) 置像素数据 (SetRawData)单点读写 (COLORREF 编码) + 一次性整图像素搬运
几何变换重置大小 (Resize) 旋转图像 (Rotate) 翻转 (Flip) 仿射变换 (WarpAffine) 裁剪矩形 (CropRect)缩放、旋转、翻转、仿射、裁剪、加边框、提取通道
颜色/二值/边缘颜色格式转换 (CvtColor) 二值化 (Threshold) 边缘检测canny (Canny) 颜色范围 (InRange)色彩空间转换、二值化、自适应阈值、边缘检测、颜色范围找色
平滑滤波高斯模糊 (GaussianBlur) 中值模糊 (MedianBlur) 双边滤波 (BilateralFilter)高斯、中值、均值、双边模糊
图像增强直方图均衡 (EqualizeHist) 限制对比均衡 (Clahe) 归一化 (Normalize) 查表映射 (LUT)直方图均衡、限制对比度均衡、归一化、查表映射
绘制画矩形 (DrawRect) 画线 (DrawLine) 绘制文本 (PutText) 漫水填充 (FloodFill)画框线圆椭圆箭头、漫水填充、GDI 中文文字渲染
合成/运算合成图像 (MergeIM) 按位与 (BitwiseAnd) 加权融合 (AddWeighted) 复制到 (CopyTo)Alpha 合成、按位与或异或、加权融合、ROI 拷贝
模板/轮廓/统计模板匹配极值 (MatchTemplateMax) 查找轮廓 (FindContours) 极值定位 (MinMaxLoc)模板匹配极值、查找/绘制轮廓、计数/求和/均值/极值定位OCR 文字识别 — QSPaddleOCR (QSPPOCR) / QS训练识别模型 (QSOcrModel) / QS单行识别信息 (QSOcrInfo) / QS文本行 (QSTextLine)
  • QSPaddleOCR (QSPPOCR) —— PaddleOCR 检测 + 识别,支持单行(识别单行 / DetectLine)与多行(识别多行 / DetectLines,返回 QS单行识别信息 (QSOcrInfo) 数组,逐行/逐字给出文本、坐标、置信度)。
  • QS训练识别模型 (QSOcrModel) —— 通用 ONNX OCR 模型,支持文本识别(识别文本 / PredictText、识别文本CTC / PredictTextCTC)、分类、滑块缺口(识别滑块 / PredictSlider)、旋转角度(识别旋转 / PredictRotate)。

目标检测 — QS目标检测 (QSYolo)
YOLO 模型检测,检测 (Detect) / 检测BGR24 (DetectBGR24) 直接对 QSMat 或 24 位位图推理,返回 QS检测框 (QSBox) 数组。
验证码识别 — QSDddd自训练 (QSDdddTrain) / QSDddd识别 (QSDdddCls)
基于 dddd 体系:QSDddd自训练 (QSDdddTrain) 加载训练模型预测,QSDddd识别 (QSDdddCls) 分类模型,适合通用字符型验证码。
模板匹配 / 找图找色 — QS匹配器 (QSMatcher)
约 35 条命令,自动化常用:
类别
代表命令(中文名 / 英文对照)

小图管理加载小图目录 (LoadSmallDir) · 加载小图Zip (LoadSmallZip) · 清空小图 (ClearSmall)
找图找图 (Find) · 找图一次 (FindOnce) · 比较图片 (CmpPic) · 定点比图 (CmpPicAt)
高级匹配找图透明 (FindTransparent) · 找图Alpha (FindAlpha) · 找图边缘 (FindEdge) · 找图旋转角度 (FindRotateAngle) · 找图缩放中心 (FindScaleCenter)
找色找色 (FindColor) · 多点找色 (FindMultiColor) · 统计颜色数 (FindColorCount) · 取颜色 (GetColor) · 比颜色 (CmpColor)
全系列尾参支持 ROI 区域限定(留空 = 全图),只在指定区域内搜索,更快更准。


安装部署
发布包按推理后端分两个目录,各只含两个文件:
dist/
├─ cpu/   QSOCR.fne   QSOCR_static.lib    ← 纯 CPU,零额外依赖
└─ dml/   QSOCR.fne   QSOCR_static.lib    ← DirectML GPU 加速在易语言 IDE 里使用(动态)
  • 关闭易语言 IDE(运行时会锁住 lib\*.fne)。
  • 把所选变体的 QSOCR.fne 拷到易语言安装目录的 lib\ 下。
  • 重新打开易语言 IDE,在「支持库配置」中勾选 QSOCR
  • 在「支持库」面板即可看到 QSMat / QS匹配器 (QSMatcher) / QSPaddleOCR (QSPPOCR) 等类与命令。

编译成独立 EXE(静态)
  • QSOCR_static.lib 拷到易语言安装目录的 static_lib\ 下。
  • 在编译选项里选择「静态编译」,生成的 EXE 已内嵌实现,无需再带任何 DLL



快速上手
下面是调用流程示意(伪代码,展示命令与对象用法)。代码里直接用易语言显示的中文命令名(这就是 IDE 里实际书写的样子)。可运行的完整范例见 QSOCR示例.e。
例 1:读图 → 转灰 → 二值化 → 保存
.局部变量 图, QSMat
图.加载文件 ("C:\test.png")            ' 从文件载入
图.颜色格式转换 (QS_COLOR_BGR2GRAY)    ' 转灰度
图.二值化 (127, 255, QS_THRESH_BINARY)
图.保存文件 ("C:\out.png")
例 2:找色
.局部变量 屏, QSMat
.局部变量 匹配器, QS匹配器
.局部变量 点, QSPoint2i
屏.加载文件 ("screen.png")
' 在整图里找 "ff0000-101010" 这种偏色范围的颜色, 命中回写坐标
匹配器.找色 (屏, "ff0000-101010", 点)
例 3:多行 OCR
.局部变量 行数组, QS单行识别信息, , "0"
行数组 = 引擎.识别多行 (图)
.计次循环首 (取数组成员数 (行数组), i)
    调试输出 (行数组.文本 (), 行数组.置信度 ())
.计次循环尾 ()

CPU / DML 变体怎么选
CPU 版
DML 版

推理后端CPUDirectML (DirectX 12 GPU)
额外依赖无需要支持 DX12 的显卡 / 驱动
适用兼容性优先、无独显机器OCR / 检测吞吐量大、有显卡加速需求
两个变体的影像处理 (OpenCV) 部分完全一致,差异只在 OCR / 分类 / 检测 / 验证码的 ONNX 推理后端。库 GUID 相同,可直接替换切换。


使用须知
  • 仅 Windows —— 库的类型与命令只在 Windows 平台的易语言 IDE 中显示(底层依赖 OpenCV / GDI / DirectML)。
  • 命令序号已冻结 —— 自本发布版起,命令/数据类型序号 append-only,只增不重排,后续升级向后兼容,老工程无需改动。
  • 异常行为 —— 调试运行时若传入非法参数,会以运行时错误中断当前语句(便于定位);编译成 EXE 的发布版则静默返回失败值(假 / 空),不中断流程。



命令附录(按领域分组)
命令在易语言中以中文名显示;下表为 中文命令名 (英文对照名) + 功能。共 256 条,此处按类/领域列出主要命令。
QSMat — 影像矩阵(核心类)

命令(中文名 / 英文对照)
功能

加载文件 (LoadFile) / 加载字节集 (LoadBytes)从文件 / 字节集载入图像
保存文件 (SaveFile)保存到文件
复制 (Clone) / 新建图像 (NewMat)克隆 / 新建图像
高度 (Rows) 宽度 (Cols) 通道数 (Channels) 类型 (Type) 位深 (Depth) 维数 (Dims) 是否为空 (Empty)行/列/通道/类型/深度/维数/是否为空
取像素 (At) / 置像素 (SetAt) / 置像素点 (SetAtScalar)读 / 写单像素 (COLORREF)
取像素数据 (RawData) / 置像素数据 (SetRawData)一次性整图像素读 / 写
取图片数据 (Data) / 显示图片 (Show)取数据指针 / 弹窗显示
重置大小 (Resize) 旋转图像 (Rotate) 翻转 (Flip) 转置 (Transpose) 仿射变换 (WarpAffine)缩放/旋转/翻转/转置/仿射变换
裁剪矩形 (CropRect) 画圆形 (CropCircle) 加边框 (CopyMakeBorder) 提取通道 (ExtractChannel)矩形/圆形裁剪、加边框、提取通道
金字塔缩小 (PyrDown) / 金字塔放大 (PyrUp)图像金字塔下/上采样
颜色格式转换 (CvtColor) 二值化 (Threshold) 自适应阈值 (AdaptiveThreshold) 边缘检测canny (Canny) 形态学 (MorphologyEx)色彩转换/二值化/自适应阈值/边缘/形态学
颜色范围 (InRange) 非 (BitwiseNot)颜色范围筛选 / 取反
高斯模糊 (GaussianBlur) 中值模糊 (MedianBlur) 均值模糊 (Blur) 双边滤波 (BilateralFilter)高斯/中值/均值/双边模糊
缩放转8位 (ConvertScaleAbs) 直方图均衡 (EqualizeHist) 限制对比均衡 (Clahe) 归一化 (Normalize) 查表映射 (LUT) 类型转换 (ConvertTo)缩放取绝对值/直方图均衡/CLAHE/归一化/查表/类型转换
按位与 (BitwiseAnd) 按位或 (BitwiseOr) 按位异或 (BitwiseXor) 绝对差 (AbsDiff) 加权融合 (AddWeighted)按位与/或/异或、绝对差、加权融合
画矩形 (DrawRect) 画线 (DrawLine) 画椭圆 (DrawEllipse) 画箭头 (ArrowedLine) 绘制文本 (PutText) 漫水填充 (FloodFill)画矩形/线/椭圆/箭头、写文字(GDI 中文)、漫水填充
去透明为白 (AlphaToBlack) 纯黑转透明 (BlackToAlpha) 复制到 (CopyTo) 合成图像 (MergeIM) 填充 (SetTo)Alpha 与黑底互转、ROI 拷贝、图像合成、整体赋值
模板匹配极值 (MatchTemplateMax)模板匹配并取最佳位置
查找轮廓 (FindContours) / 绘制轮廓 (DrawContours)查找 / 绘制轮廓
非零数 (CountNonZero) 像素和 (Sum) 平均值 (Mean) 均值标准差 (MeanStdDev) 极值定位 (MinMaxLoc)非零计数/求和/均值/均值标准差/极值定位
</details>
QS轮廓集 — 轮廓集合

命令(中文名 / 英文对照)
功能

数量 (Length)轮廓条数
外接矩形 (BoundingRect)某条轮廓的外接矩形
是否存在 (ElementExists)指定轮廓是否存在
子点数 (SubLength) / 子元素 (SubElement)某条轮廓的点数 / 取其中一个点
</details>
OCR — QSPaddleOCR / QS训练识别模型 / QS单行识别信息 / QS文本行

命令(中文名 / 英文对照)
功能

创建 (Create)创建 PaddleOCR 引擎(文件/内存模型)
识别单行 (DetectLine)识别单行,返回 QS文本行 (QSTextLine)
识别多行 (DetectLines)识别多行,返回 QS单行识别信息 (QSOcrInfo) 数组
文本 (Text) 字符数 (CharCount) 字符文本 (CharText) 字符置信度 (CharScore) 字符位置 (CharPosition)单行:整行文本/字数/单字文本/单字置信度/单字位置
文本 (GetText) 矩形 (GetRect) 置信度 (GetScore)多行元素:文本/矩形/置信度
字符数 (GetCharCount) 字符文本 (GetCharText) 字符置信度 (GetCharScore) 字符位置 (GetCharPosition)多行元素:逐字 文本/置信度/位置
创建 (Create) 设置分类 (SetClass)通用 ONNX OCR 模型:创建 / 设置字符集
识别文本 (PredictText) 识别文本CTC (PredictTextCTC) 识别分类 (PredictCls)文本识别 / CTC 识别 / 分类
识别滑块 (PredictSlider) 识别旋转 (PredictRotate)滑块缺口 / 旋转角度预测
</details>
QS目标检测 — YOLO 目标检测

命令(中文名 / 英文对照)
功能

创建 (Create)加载 YOLO 模型
检测 (Detect) / 检测BGR24 (DetectBGR24)检测目标,返回 QS检测框 (QSBox) 数组
释放 (Release)释放模型
</details>
验证码 — QSDddd自训练 / QSDddd识别

命令(中文名 / 英文对照)
功能

创建 (Create) 载入配置 (LoadConfig) 识别 (Predict)dddd 训练模型:创建 / 载配置 / 预测
创建 (Create) 设置类表 (SetClass) 识别 (Predict)dddd 分类模型:创建 / 设字符集 / 预测
</details>
QS匹配器 — 模板匹配 / 找图找色

命令(中文名 / 英文对照)
功能

加载小图 (LoadSmall) 加载小图目录 (LoadSmallDir) 加载小图Zip (LoadSmallZip)加载小图(单张 / 目录 / zip)
取小图尺寸 (GetPicSize) 取小图数量 (GetSmallCount) 清空小图 (ClearSmall)取小图尺寸 / 小图数量 / 清空缓存
找图 (Find) 找图一次 (FindOnce)多模板找图 / 找一个
比较图片 (CmpPic) 定点比图 (CmpPicAt)比图 / 指定位置比图
找图透明 (FindTransparent) 找图Alpha (FindAlpha) 找图边缘 (FindEdge)透明 / Alpha / 边缘匹配
找图旋转角度 (FindRotateAngle) 找图旋转ORB (FindRotateOrb)旋转匹配(角度 / ORB 特征)
找图缩放中心 (FindScaleCenter) 找图缩放ORB (FindScaleOrb)缩放匹配(中心 / ORB 特征)
找色 (FindColor) 找色块 (FindColorBlock) 多点找色 (FindMultiColor)找色 / 找色块 / 多点找色
统计颜色数 (FindColorCount) 取颜色 (GetColor) 比颜色 (CmpColor)颜色计数 / 取色 / 比色
RGB二值化 (RgbBinarize)RGB 二值化
以上找图/找色命令尾参均支持 ROI 区域限定(留空 = 全图)。
</details>
全局命令 — 窗口 / 底层 CV / 值类型构造

全局命令在易语言中均带 QS_ 前缀显示。
命令(中文名 / 英文对照)
功能

QS_创建窗口 (NamedWindow) QS_调窗大小 (ResizeWindow) QS_移动窗口 (MoveWindow)窗口:创建 / 缩放 / 移动
QS_显示图片 (Imshow) QS_等待按键 (WaitKey) QS_销毁窗口 (DestroyWindow) QS_销毁所有窗口 (DestroyAllWindows)显示 / 等待按键 / 销毁窗口
QS_加载图片 (Imread) QS_色彩转换 (CvtColor) QS_模板匹配 (MatchTemplate) QS_归一化 (Normalize) QS_极值定位 (MinMaxLoc) QS_图像拼接 (ConcatImages)底层 OpenCV:读图/转色/模板匹配/归一化/极值/拼图
QS_造大小 (MakeSize) QS_造矩形 (MakeRect) QS_造标量 (MakeScalar)构造值类型:大小 / 矩形 / 标量
QS_造点2i (MakePoint2i) ..2l ..2f ..2d构造点(整数/长整数/单精度/双精度)
QS_造匹配结果 (MakeMatchResult) QS_造匹配扩展结果 (MakeMatchExResult)构造匹配结果值类型
</details>


数据类型一览(23 个)
  • 句柄类(11):QSMat QS轮廓集 (QSContours) QS文本行 (QSTextLine) QSPaddleOCR (QSPPOCR) QS训练识别模型 (QSOcrModel) QS单行识别信息 (QSOcrInfo) QS图像分类 (QSImageCls) QS目标检测 (QSYolo) QSDddd自训练 (QSDdddTrain) QSDddd识别 (QSDdddCls) QS匹配器 (QSMatcher)
  • 值类型(12):QSSize QSRect QSScalar QSPoint2i/2l/2f/2d QS检测框 (QSBox) QS分类结果 (QSClsResult) QS匹配结果 (QSMatchResult) QS匹配扩展结果 (QSMatchExResult)



许可与致谢
本支持库的能力建立在以下开源项目之上,在此致谢:
  • OpenCV 5.0 — 图像处理核心
  • ONNX Runtime 1.2* — 神经网络推理后端(CPU / DirectML)
  • PaddleOCR — OCR 文字检测与识别
  • ddddocr / dddd_trainer — 验证码识别体系
  • YOLO — 目标检测

请遵循各上游项目的许可证条款使用。


QSOCR · 易语言支持库 · · OpenCV 5.0 / ONNX Runtime 1.2* · 32 位 /MT

点评

保存的草稿,自动发布了,还在测试中,动态库在Q群 324222388   湖南省娄底市  发表于 前天 00:27
不要说源码了,支持库成品的没有,一通介绍   广东省广州市  发表于 3 天前

评分

参与人数 1好评 +1 精币 +1 收起 理由
fengyishen + 1 + 1 感谢分享,很给力!~ 在群里下载到了!

查看全部评分


本帖被以下淘专辑推荐:

  • · 收藏|主题: 402, 订阅: 6
结帖率:86% (12/14)

签到天数: 5 天

发表于 12 分钟前 | 显示全部楼层   广东省惠州市
QSOCR · 易语言支持库 · · OpenCV 5.0 / ONNX Runtime 1.2* · 32 位 /MT
回复 支持 反对

使用道具 举报

发表于 半小时前 | 显示全部楼层   山西省运城市
111111111111111111111
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 19 天

发表于 6 小时前 | 显示全部楼层   四川省成都市
好用么?精度高不
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 7 小时前 高大上手机用户 | 显示全部楼层   广东省云浮市
怎么下载
回复 支持 反对

使用道具 举报

签到天数: 5 天

发表于 昨天 13:04 | 显示全部楼层   广西壮族自治区北海市
源码在哪?
回复 支持 反对

使用道具 举报

签到天数: 5 天

发表于 昨天 13:03 | 显示全部楼层   广西壮族自治区北海市
66666666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 13 天

发表于 前天 20:51 | 显示全部楼层   河北省石家庄市
6666666666666666
回复 支持 反对

使用道具 举报

签到天数: 19 天

发表于 前天 09:38 | 显示全部楼层   浙江省宁波市
感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 3 天前 | 显示全部楼层   河南省信阳市
666666666666
回复 支持 反对

使用道具 举报

签到天数: 10 天

发表于 3 天前 | 显示全部楼层   四川省广安市
6666666666666666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表