图片处理

函数:imageBinarization() 图片二值化

函数说明 : 按指定阈值对图片进行二值化处理。
函数方法 : imageBinarization(文本型 picpath, 整数型 number);
返回值 : 无

参数类型说明
picpath文本型图片路径, 支持BMP,JPG,PNG格式
number整数型二值化阈值,范围 0 - 255,作为图像二值化的参照值。

示例

function main()
    f = "/var/touchelf/a.jpg"
    snapshotScreen(f)
    imageBinarization(f, 100)
end
注意:二值化后的图片会覆盖原图.

函数:imageFilter() 指定颜色对图片二值化

函数说明 : 按指定颜色对图片进行二值化处理。
函数方法 : imageFilter(文本型 picpath, 数组 table, 整数型 number);
返回值 : 无

参数类型说明
picpath文本型图片路径, 支持BMP,JPG,PNG格式
table数组颜色列表
number整数型相似度,范围 0 - 100

示例

function main()
    f = "/var/touchelf/a.jpg"
    snapshotScreen(f)
    imageFilter(f,{0x007AFF}, 80)
end

示例:匹配多个颜色并配合本地ocr函数实现文字识别

function main()
    f = "/var/touchelf/a.jpg"
    snapshotScreen(f)
    imageFilter(f,{0x007AFF, 0xFFFFFF, 0xFF7AFF}, 80)
    local inspect = require('inspect')
    code, info = localOcrTextEx("/var/touchelf/tessdata",       -- 语言包tessdata目录在设备中的路径
                                                    "chi_sim",  -- 语言类型为英文
                                                    "",         -- 白名单为空
                                                    f);         -- 图片地址
    if code == "" then
        notifyMessage("识别失败");
    else
        notifyMessage(string.format("识别成功: %s", code));
        logDebug(inspect(info))
    end
end
注意:二值化后的图片会覆盖原图.

示例: 配合本地ocr功能实现找字并返回坐标

function main()
    x,y = findText("触摸精灵", {0xFFFFFF})
    logDebug(x..","..y)
end
function findText(str, color)
    local f = "/var/touchelf/a.jpg"
    snapshotScreen(f)
    imageFilter(f,color, 70)
    code, info = localOcrTextEx("/var/touchelf/tessdata",         -- 语言包tessdata目录在设备中的路径
                                                    "chi_sim",  -- 语言类型为中文
                                                    "",     -- 白名单为空
                                                    f); -- 图片地址
    if code == "" then
        return -1, -1
    else
        if string.find(code,str) then 
            local index = 1
            local t = {}
            for k, v in pairs(info) do
                if v.char == str:sub((index-1) * 3 + 1, (index-1) * 3 + 1 + 2) then 
                    if index == 1 then 
                        t = v
                    end
                    if index == string.len(str) / 3 then 
                        return t.x, t.y
                    else
                        index = index + 1
                    end
                else 
                    index = 1
                end
            end
            return -1, -1
        else 
            return -1, -1
        end
    end
end

以上示例返回:43,186
使用图片:
b.jpg
二值化以后的图片:
a.jpg

函数:imageResize() 图片缩放

函数说明 : 指定宽高对图片缩放。
函数方法 : imageResize(文本型 path, 整数型 w, 整数型 h);
返回值 : 无

参数类型说明
path文本型图片路径, 支持BMP,JPG,PNG格式
w整数型宽度
h整数型高度

示例

function main()
    f = "/var/touchelf/a.jpg"
    imageResize(f, 100, 100)
end
注意:缩放后的图片会覆盖原图.

函数:qrCodeEncode 二维码图片生成

函数说明 : 将文本编译成二维码图片。
函数方法 : qrCodeEncode(文本型 path, 文本型 text, 整数型 size);
返回值 : 无

参数类型说明
path文本型图片路径, 支持BMP,JPG,PNG格式
text文本型二维码内容
size整数型二维码尺寸

示例

function main()
    f = "/var/touchelf/a.jpg"
    qrCodeEncode(f, "http://www.touchelf.com", 200)
end

函数:qrCodeDecode 二维码图片解析

函数说明 : 将二维码图片解析为字符串.
函数方法 : qrCodeDecode(文本型 path);
返回值 : 文本型 text

参数类型说明
path文本型图片路径, 支持BMP,JPG,PNG格式
返回值类型说明
text文本型解析二维码得到的字符串

示例

function main()
    f = "/var/touchelf/a.jpg"
    text = qrCodeDecode(f)
    logDebug(text)
end