LUA二值化效率较低,该函数只适合小范围二值化。
学习算法和思路可转化成C语言提高效率。

function binarizeImage(t)local getColorRGB = getColorRGB  --[[定义取色函数]]local rect = t.rect or {0,0,0,0}local diff = t.diff or {"0x000000-0x000000"}local color = {}  --[[diff参数数值化]]local tab = {}    --[[二值化存储]]for k,v in pairs(diff) doif color[k]==nil thenlocal rgb_1 = tonumber(string.sub(v,1,8))   --[[参数颜色]]local rgb_2 = tonumber(string.sub(v,10,17)) --[[参数偏色]]color[k] = {lr = rgb_1/0x10000,       --[[RGB]]lg = rgb_1%0x10000/0x100,lb = rgb_1%0x100,sr=rgb_2/0x10000,       --[[RGB阈值]]sg = rgb_2%0x10000/0x100,sb=rgb_2%0x100,}endendkeepScreen(true) --[[保持屏幕,只在一张图片获取颜色]]for y=rect[2],rect[4] dolocal y1 = y - rect[2] + 1tab[y1] = {}for x=rect[1],rect[3] dolocal x1 = x - rect[1] + 1for i = 1,#color do --[[diff多参数循环]]local lr,lg,lb = color[i].lr,color[i].lg,color[i].lblocal sr,sg,sb = color[i].sr,color[i].sg,color[i].sblocal r,g,b = getColorRGB(x,y) --[[获取颜色RGB,搭配保持屏幕函数提高效率]]if math.abs(lr-r) > sr or math.abs(lg-g) > sg or math.abs(lb-b) > sb thentab[y1][x1] = 0  --[[不匹配]]elsetab[y1][x1] = 1  --[[匹配]]breakendendendendkeepScreen(false) --[[关闭保持屏幕]]return tab
end--[[小范围]]
local co = {rect = {597,305,672,333},diff = {"0xf3f3f4-0x555555"}}
local t = binarizeImage(co) -->耗时69ms
--[[全屏单色]]
local co = {rect = {0, 0, 719, 1279},diff = {"0xf3f3f4-0x555555"}}
local t = binarizeImage(co) -->耗时2623ms
--[[全屏多色]]
local co = {rect = {0, 0, 719, 1279},diff = {"0xf3f3f4-0x555555","0xf3f3f4-0x555555"}}
local t = binarizeImage(co) -->耗时4982ms

【文字识别】Lua 二值化函数相关推荐

  1. 边缘识别+轮廓识别+边框+二值化

    机器视觉 图片处理 一:图片二值化 1. 什么是二值化 2. 代码 3. 结果展示 二:寻找物体轮廓 1. 主要函数 2. 代码 3.结果展示 三:二值化+边框 四:结语 边缘识别+轮廓识别+边框+二 ...

  2. OpenCV:二值化函数cv2.threshold

    目录 功能作用: (一)简单阈值 (二)自适应阈值: (三)Otsu's二值化 功能作用: 二值化函数作用:图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效 ...

  3. 详解图像二值化 函数threshold

    在图像处理过程中,一般经常会用到图像的二值化函数 threshold 在日常使用中,虽然理解二值化的含义,但是具体函数的参数的定义还不是很清楚,下面简单纪录一下,增强记忆. threshold( In ...

  4. 计算机视觉(1)关于cvThreshold二值化函数

    计算机视觉(1)关于cvThreshold二值化函数 opencv中文说明中是这样说的: Threshold 对数组元素进行固定阈值操作 void cvThreshold( const CvArr* ...

  5. 二值化函数cvThreshold()参数CV_THRESH_OTSU的疑惑

    查看OpenCV文档cvThreshold(),在二值化函数cvThreshold(const CvArr* src, CvArr* dst, double threshold, double max ...

  6. 二值化函数cvThreshold()参数CV_THRESH_OTSU的疑惑【转】

    查看OpenCV文档cvThreshold(),在二值化函数cvThreshold(const CvArr* src, CvArr* dst, double threshold, double max ...

  7. python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例

    python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...

  8. Opencv java 二值化函数threshold (10)

    函数理解 threshold 英语的意思是门槛,门槛的意思说要么在门槛外,要么在门槛内,并且门槛具有一定的条件要求 接下来我们看在opencv中如何使用该函数 Imgproc.threshold(sr ...

  9. MATLAB图像二值化函数im2bw与imbinarize对给定阈值的内部处理细节

    MATLAB图像处理工具包中的im2bw函数和imbinarize函数均可以实现灰度图像的二值化功能,且在MATLAB R2018a之后推荐使用imbinarize.但两者在内部处理图像的时候具有一些 ...

最新文章

  1. Rust 数据类型介绍
  2. 官网的Ext direct包中.NET版的问题
  3. 【牛客网】牛客练习赛19 F 算式子【数学--递推 、前缀、数字】
  4. Tomcat 启动时 SecureRandom 非常慢解决办法
  5. LeetCode 13罗马数字转整数14最长公共前缀
  6. MySQL sql99语法—左(右)外连接
  7. 漫谈单体架构与微服务架构(上):单体架构
  8. js解析java对象数组_js接收并转化Java中的数组对象的方法
  9. 让计划任务生成的文件中包含当前日期
  10. python网页提交表单_使用Python中的POST请求通过网站表单上传基本文件
  11. J2EE事务并发控制策略总结
  12. webpack2.7.0配置不同的打包环境
  13. JavaScript 代码的加入
  14. 算法基本和常见排序算法
  15. Kubernetes网络自学系列 | 千呼万唤始出来:veth pair
  16. 计算机行业常见英语,计算机行业英文词汇
  17. shell中计算执行命令所用耗时
  18. Unity 语音通话功能
  19. FL Studio2023终身免费升级适合电音舞曲DJ使用
  20. less @media根据宽度判断不同屏幕手机样式

热门文章

  1. offbye的Dottext 1.0 Beta 2汉化美化版发布了!欢迎下载
  2. highcharts去掉右下角highchart.com和右上角的图标(三个小横杆)
  3. [前端]-JQuery学习
  4. 应聘对白_权力游戏对白系列调查
  5. Linux系统开机自启动程序设置
  6. matlab用fill三维,使用matlab绘制三维图形的方法
  7. 百度编辑器整合html,怎么把百度编辑器(Ueditor)整合到dedecms中
  8. java抽象类的特点
  9. 4月18号软件更新资讯合集
  10. 什么是接口?什么是接口测试?什么是接口自动化测试?