 | |  |  | OpenCV图像处理与识别AIWROK软件十大功能及其实现方法..
- //第一个,opencv.checkColorsEx_精简OCR识别
- function safeOCRProcess() {
- // 第一步:先验证目标区域是否存在
- if (!opencv.checkColorsEx('多点比色.cv')) {
- printl("基础区域验证未通过");
- return;
- }
- // 第二步:执行OCR并验证返回类型
- var ocrResult = opencv.OCREx('多点比色.cv');
-
- // 双重类型验证(应对可能返回boolean的情况)
- if (!ocrResult || typeof ocrResult !== 'object' || typeof ocrResult.findIncludeText !== 'function') {
- printl("OCR结果异常");
- return;
- }
- // 第三步:安全处理识别结果
- try {
- var resultText = ocrResult.findIncludeText('蜂');
- if (resultText) {
- printl("识别成功:" + resultText);
- // 这里可以添加点击等后续操作
- } else {
- printl("文本未找到");
- }
- } catch (e) {
- printl("结果处理异常:" + e.message);
- }
- }
- // 执行处理流程
- safeOCRProcess();
- //第二个,opencv.checkColorsEx_精简区域找图
- var seek = opencv.findImagesEx('区域找图.cv');
- if (seek) {
- seek[0].click(); //点击
- } else {
- printl("未找到了");
- }
- var seek = opencv.findImagesEx('区域找图.cv');
- if (seek) {
- var place = seek[0].getRealRect();
- var x = place.getCenterX();
- var y = place.getCenterY();
- printl(x+","+y)
- } else {
- printl("未找到了");
- }
- //第三个,opencv.checkColorsEx_精简多点找色
- var seek = opencv.checkColorsEx('多点比色.cv');
- if (seek) {
- printl("找到了");
- } else {
- printl("未找到了");
- }
- if (opencv.checkColorsEx('多点比色.cv')) {
- printl("找到了");
- } else {
- printl("未找到了");
- }
- //第四个,opencv.checkColorsEx_精简多点比色
- var seek = opencv.checkColorsEx('多点比色.cv');
- if (seek) {
- printl("找到了");
- } else {
- printl("未找到了");
- }
- if (opencv.checkColorsEx('多点比色.cv')) {
- printl("找到了");
- } else {
- printl("未找到了");
- }
- //第五个,opencv.checkColors_OCR识别
- var mat=screen.screenShot(720,1280,100).getMat();
- var seek = opencv.OCR(mat, '小猪猪.ocr', 0.95,0);
- if (seek) {
- printl(ocr1.getAllString());
- } else {
- printl("未找到了");
- }
- var mat=screen.screenShot(720,1280,100).getMat();
- var seek = opencv.OCR(mat, '小猪猪.ocr', 0.95,0);
- if (seek) {
- printl(seek.findIncludeText('小猪猪'))
- } else {
- printl("未找到了");
- }
- //第六个,opencv.checkColors_多点比色
- var mat=screen.screenShot(720,1280,100).getMat();
- var seek = opencv.checkColors(mat, ['351,452,#553E38', '368,449,#816D78'], 2, 4, 0.95);
- if (seek) {
- printl("找到了");
- } else {
- printl("未找到了");
- }
- var mat=screen.screenShot(720,1280,100).getMat();
- if (opencv.checkColors(mat, ['351,452,#553E38', '368,449,#816D78'], 2, 4, 0.95)) {
- printl("找到了");
- } else {
- printl("未找到了");
- }
- //第七个,opencv.findMultiColor_多点找色
- var mat=screen.screenShot(720,1280,100).getMat();
- var seek = opencv.findMultiColor(mat,'607,425,#264878',['601,413,#1E4276','597,428,#1E4276','591,429,#F8FBFF'],2,5,[0.80040,0.30889,0.87549,0.35667],0.95);
- if (seek) {
- seek[0].click(); //点击
- } else {
- printl("未找到了");
- }
- var mat=screen.screenShot(720,1280,100).getMat();
- var seek = opencv.findMultiColor(mat,'607,425,#264878',['601,413,#1E4276','597,428,#1E4276','591,429,#F8FBFF'],2,5,[0.80040,0.30889,0.87549,0.35667],0.95);
- if (seek) {
- var place = seek[0].getRealRect();
- var x = place.getCenterX();
- var y = place.getCenterY();
- printl(x+","+y)
- } else {
- printl("未找到了");
- }
- //第八个,opencv.templateMatch_区域找图
- var mat=screen.screenShot(720,1280,100).getMat();
- var seek = opencv.templateMatch(mat, ["图片1","图片2"],0.9, [0.03360,0.14222,0.08893,0.17667],true);
- if (seek) {
- seek[0].click(); //点击
- } else {
- printl("未找到了");
- }
- var mat=screen.screenShot(720,1280,100).getMat();
- var seek = opencv.templateMatch(mat, ["图片1","图片2"],0.9, [0.03360,0.14222,0.08893,0.17667],true);
- if (seek) {
- var place = seek[0].getRealRect();
- var x = place.getCenterX();
- var y = place.getCenterY();
- printl(x+","+y)
- } else {
- printl("未找到了");
- }
- //第九个,opencv.HSV颜色变换
- // 截图并获取Mat对象
- var mat = screen.screenShot(720, 1280, 100).getMat();
- // 使用HSV方法转换
- var hsvMat = opencv.HSV(mat, 0, 0, 0);
- printl("HSV 转换完成!");
- printl(hsvMat);
- //第十个,opencv.bitmapToMat(bmp)bitmap图转mat
- importPackage(org.opencv.core);
- importPackage(org.opencv.imgproc);
- importPackage(org.opencv.android);
- importClass(android.graphics.Bitmap);
- function screenshotAndBinarize(minThreshold, maxThreshold) {
- // 获取屏幕截图
- var bitmap = screen.screenShot(640, 960, 100).getBitmap();
- // 将 Bitmap 转换为 Mat
- var mat = new Mat();
- Utils.bitmapToMat(bitmap, mat);
- // 创建一个用于存储二值化结果的 Mat
- var binaryMat = new Mat();
-
- // 应用阈值处理
- Imgproc.threshold(mat, binaryMat, minThreshold, maxThreshold, Imgproc.THRESH_BINARY);
- printl(binaryMat);
- // 将二值化的 Mat 转换回 Bitmap
- var binaryBitmap = Bitmap.createBitmap(binaryMat.cols(), binaryMat.rows(), Bitmap.Config.ARGB_8888);
- Utils.matToBitmap(binaryMat, binaryBitmap);
- return binaryBitmap;
- }
- // 调用处理函数
- var resultBitmap = screenshotAndBinarize(50, 150);
- printl(resultBitmap);
复制代码
1. 精简OCR识别 (safeOCRProcess 函数)- 步骤1:使用 opencv.checkColorsEx 检查目标区域是否存在。如果不存在,输出提示并返回。
- 步骤2:使用 opencv.OCREx 进行OCR识别,并对返回结果进行类型验证,确保结果是对象且包含 findIncludeText 方法。
- 步骤3:安全处理OCR结果,查找包含特定文本(如“蜂”)的内容,并根据结果进行后续操作或输出提示。
2. 精简区域找图- 使用 opencv.findImagesEx 在指定区域查找图像。如果找到,点击该图像或输出其中心坐标;否则输出“未找到”。
3. 精简多点找色- 使用 opencv.checkColorsEx 检查多点颜色是否符合预期。如果符合,输出“找到了”;否则输出“未找到”。
4. 精简多点比色- 与第3部分类似,使用 opencv.checkColorsEx 进行多点比色,输出结果。
5. OCR识别- 使用 opencv.OCR 对屏幕截图进行OCR识别。如果识别成功,输出所有字符串或查找包含特定文本(如“小猪猪”)的内容;否则输出“未找到”。
6. 多点比色- 使用 opencv.checkColors 检查屏幕截图中的多点颜色是否符合预期。如果符合,输出“找到了”;否则输出“未找到”。
7. 多点找色- 使用 opencv.findMultiColor 在屏幕截图中查找特定颜色组合。如果找到,点击该位置或输出其中心坐标;否则输出“未找到”。
8. 区域找图- 使用 opencv.templateMatch 在屏幕截图中查找指定图像。如果找到,点击该图像或输出其中心坐标;否则输出“未找到”。
9. HSV颜色变换- 使用 opencv.HSV 方法将屏幕截图转换为HSV颜色空间,并输出转换后的Mat对象。
10. Bitmap图转Mat- 使用 Utils.bitmapToMat 将Bitmap图像转换为Mat对象,然后进行二值化处理,并将结果转换回Bitmap输出。
|
| |  | |  |
|