日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

autojs之提取图片中的红色文字(通过找边界进行裁剪)

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 autojs之提取图片中的红色文字(通过找边界进行裁剪) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

autojs之提取圖片中的紅色文字——通過找邊界進行裁剪

  • 一、前言
  • 二、參考
  • 三、效果
    • 1.autojs的findcolor函數找到的左上邊界的點
    • 2.找右下邊界
  • 四、總結

一、前言

之前寫過通過二值化的方法提取圖片中的紅色文字,感覺很麻煩,在看到下面按鍵精靈的文章后,覺得可以一試

二、參考

【按鍵精靈安卓版】找出不同顏色的文字(找圖方向參數的應用)

事實上,autojs里沒有按鍵精靈findcolor的功能,不能從指定的方向對圖片進行搜索,也不能準確的找到紅色文字最外側的點,所以很難找到文字的邊界;
而且這種方法只適用于單行的紅色文字,如果文字有換行,那么需要添加更多的判斷,個人感覺很不方便。

三、效果

實際功能其實沒有實現,因為紅色文字的邊界很難找到,只是把我測試的效果給大家看一下

1.autojs的findcolor函數找到的左上邊界的點

path = "/sdcard/Pictures/QQ/a.png" var img = images.read(path); log("讀取圖片")//循環找色,找到紅色時停止并報告坐標 while (true) {var point = findColor(img, "#fd1111", { threshold: 120 });if (point) {toastLog("找到紅色#fd1111,坐標為(" + point.x + ", " + point.y + ")");var clip = images.clip(img,point.x, point.y, 20, 20);//裁剪images.save(clip, "./clip2.png");break} } img.recycle();//回收圖片,截屏的不用 exit()

可以看到找到的點并不是最左邊的點

2.找右下邊界

不能從指定的方向對圖片進行搜索,所以只能在找到最左邊屆的點后,通過循環往右找,直到找到不是紅字的黑色字后停止

但是因為圖片里紅色的范圍很大,黑色的范圍也很大,并不能很好的匹配,所以這個方法的準確度可能還不如二值化的方法

path = "/sdcard/Pictures/QQ/a.png" var img = images.read(path); log("讀取圖片") while (true) {var point = findColor(img, "#fd1111", { threshold: 120 });if (point) {toastLog("找到紅色#fd1111,坐標為(" + point.x + ", " + point.y + ")");var x1 = point.x, x2 = 0, y1 = point.y, y2 = 0;for (var x = point.x, y = point.y; y < img.getHeight(); y += 1) {var color = images.pixel(img, x, y);toastLog("坐標為(" + x + ", " + y + ") " + colors.toString(color));if (colors.isSimilar(color, "#000000", 50)) {//和黑色相似y2 = y;//下邊界break}}for (var x = point.x, y = point.y; x < img.getWidth(); x += 1) {//x < point.x + 100var color = images.pixel(img, x, y);toastLog("坐標為(" + x + ", " + y + ") " + colors.toString(color));if (colors.isSimilar(color, "#000000", 50)) {//和黑色相似//if (colors.toString(color) == "#E2DCDA") {x2 = x;//右邊界break}}log(x1, y1, x2 - x1, y2 - y1)var clip = images.clip(img, x1, y1, x2 - x1, y2 - y1);images.save(clip, "./clip.png");break} } img.recycle(); exit()

四、總結

個人認為,這個通過邊界裁剪的方法也很麻煩,而且普適性還不如二值化的方法,暫且放棄這種方法。

有覺得的可行的朋友可以自己嘗試一下,歡迎討論。

還是研究一下怎么將圖片中的黑色變白,保持其他顏色不變,如果有懂行的大佬,希望指點一下,感謝。

總結

以上是生活随笔為你收集整理的autojs之提取图片中的红色文字(通过找边界进行裁剪)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。