B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 8|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

AIWROKÈí¼þÆ»¹ûIOSϵͳͼɫÊÓ¾õ[opencv]·½·¨Ð¡½á

[¸´ÖÆÁ´½Ó]

935

Ö÷Ìâ

940

Ìû×Ó

7017

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7017
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
AIWROKÈí¼þÆ»¹ûIOSϵͳͼɫÊÓ¾õ[opencv]·½·¨Ð¡½á
AIWROKÈí¼þÆ»¹ûIOSϵͳͼɫÊÓ¾õ[opencv]·½·¨Ð¡½á B2BÍøÂçÈí¼þ

  1. /*
  2. 🍎½»Á÷ QQ Ⱥ 711841924 Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639
  3. 🍎OpenCV ͼÏñ´¦Àí·½·¨Ð¡½á
  4. */

  5. //🍎OpenCV Àà [opencv] ·½·¨Ð¡½á

  6. // µÚÒ»¸ö·½·¨£º📌findImagesEx - cvÎļþÕÒͼ£¨Ä£°åÆ¥ÅäcvÕÒͼ£©
  7. /*
  8. Àà±ð ÏêÇé˵Ã÷
  9. ·½·¨¹¦ÄÜ »ùÓÚcvÎļþ½øÐÐÄ£°åÆ¥ÅäÕÒͼ£¬·µ»ØÆ¥Åäµ½µÄÄ¿±êÊý×é
  10. ·½·¨Ç©Ãû Detect[] opencv.findImagesEx (String cvFile)
  11. ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飬ÿ¸öÔªËØ°üº¬Î»Öá¢ÏàËÆ¶ÈµÈÐÅÏ¢£©
  12. ²ÎÊý - String cvFile£ºcv¸ñʽµÄÄ£°åÎļþ·¾¶
  13. */
  14. // ʾÀý£º»ùÓÚcvÎļþÕÒͼ
  15. let findResults = opencv.findImagesEx("./template.cv");
  16. print.log("cvÎļþÕÒͼ½á¹û£º", findResults);


  17. // µÚ¶þ¸ö·½·¨£º📌OCREx - cvÎļþOCR£¨Ä£°åÆ¥ÅäOCR£©
  18. /*
  19. Àà±ð ÏêÇé˵Ã÷
  20. ·½·¨¹¦ÄÜ »ùÓÚcvÎļþÄ£°å½øÐÐÎÄ×Öʶ±ð£¬·µ»ØOCRʶ±ð½á¹û
  21. ·½·¨Ç©Ãû OcrResult opencv.OCREx (String cvFile)
  22. ·µ»ØÖµ OcrResult£¨OCRʶ±ð½á¹û¶ÔÏ󣬰üº¬Ê¶±ðµ½µÄÎÄ×Ö¼°Î»ÖÃÐÅÏ¢£©
  23. ²ÎÊý - String cvFile£ºcv¸ñʽµÄOCRÄ£°åÎļþ·¾¶
  24. */
  25. // ʾÀý£º»ùÓÚcvÎļþ½øÐÐOCRʶ±ð
  26. let ocrResult = opencv.OCREx("./textTemplate.cv");
  27. print.log("OCRʶ±ðÎÄ×Ö£º", ocrResult.text);


  28. // µÚÈý¸ö·½·¨£º📌templateMatch - ¶àÄ£°åÆ¥Åä²éÕÒÄ¿±ê¶ÔÏó
  29. /*
  30. Àà±ð ÏêÇé˵Ã÷
  31. ·½·¨¹¦ÄÜ »ùÓÚ¶à¸öÄ£°åͼƬÔÚÖ¸¶¨Í¼ÏñÖÐÆ¥ÅäÄ¿±ê£¬¿ÉÉèÖÃÆ¥ÅäÇøÓò¡¢ãÐÖµµÈ
  32. ·½·¨Ç©Ãû Detect[] opencv.templateMatch (Mat mat, String[] templates, Double threshold, Double[] roi, Boolean best)
  33. ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飩
  34. ²ÎÊý - Mat mat£º´ýÆ¥ÅäµÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  35. - String[] templates£ºÄ£°åͼƬ·¾¶Êý×é
  36. - Double threshold£ºÆ¥ÅäãÐÖµ£¨0-1£¬ÖµÔ½¸ßÆ¥ÅäÔ½Ñϸñ£©
  37. - Double[] roi£ºÆ¥ÅäÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ [0,0,1,1]
  38. - Boolean best£ºÊÇ·ñÖ»·µ»Ø×îÓÅÆ¥Åä½á¹û£¨trueÔòÖ»·µ»Ø×î¼ÑÆ¥Å䣬false·µ»ØËùÓзûºÏãÐÖµµÄ½á¹û£©
  39. */
  40. // ʾÀý£º¶àÄ£°åÆ¥ÅäÖ¸¶¨ÇøÓò
  41. const templates = ["./tpl1.png", "./tpl2.png"];
  42. const matchResults = opencv.templateMatch(mat, templates, 0.8, [0.2, 0.2, 0.6, 0.6], true);
  43. print.log("Ä£°åÆ¥Åä½á¹û£º", matchResults);


  44. // µÚËĸö·½·¨£º📌findImages - ¶àͼ²éÕÒ£¨Ö§³Ö³¬Ê±ºÍÖÊÁ¿ÉèÖã©
  45. /*
  46. Àà±ð ÏêÇé˵Ã÷
  47. ·½·¨¹¦ÄÜ Í¬Ê±²éÕÒ¶àÕÅÏàËÆÍ¼Æ¬£¬³¬Ê±Î´ÕÒµ½Ôò·µ»Ønull£»¿ÉÉèÖýØÍ¼ÖÊÁ¿¡¢³¬Ê±Ê±¼äµÈ
  48. ·½·¨Ç©Ãû Detect[]|null opencv.findImages (String[] images, Double threshold, Int32 timeOut, Int32 quality, Double[] rects)
  49. ·µ»ØÖµ Detect[]|null£¨Æ¥Åä³É¹¦·µ»ØÄ¿±êÊý×飬ʧ°Ü·µ»Ønull£©
  50. ²ÎÊý - String[] images£º´ý²éÕÒµÄͼƬ·¾¶Êý×é
  51. - Double threshold£ºÏàËÆ¶ÈãÐÖµ£¨0-1£©
  52. - Int32 timeOut£º³¬Ê±Ê±¼ä£¨ºÁÃ룬³¬¹ý¸Ãʱ¼äδÕÒµ½Ôò·µ»Ønull£©
  53. - Int32 quality£ºÆÁÄ»½ØÍ¼ÖÊÁ¿£¨0£º±êÇ壬1£º¸ßÇ壬2£º³¬Ç壩
  54. - Double[] rects£º²éÕÒÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ
  55. */
  56. // ʾÀý£º¶àͼ²éÕÒ²¢ÉèÖó¬Ê±
  57. const targetImages = ["./img1.png", "./img2.png"];
  58. const multiFindResults = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
  59. if (multiFindResults) {
  60.   print.log("¶àͼ²éÕҳɹ¦£¬½á¹û£º", multiFindResults);
  61. } else {
  62.   print.err("¶àͼ²éÕÒ³¬Ê±»òʧ°Ü");
  63. }


  64. // µÚÎå¸ö·½·¨£º📌toGray - ͼÏñת»Ò¶Èͼ
  65. /*
  66. Àà±ð ÏêÇé˵Ã÷
  67. ·½·¨¹¦ÄÜ ½«ÊäÈëµÄMatͼÏñת»»Îª»Ò¶Èͼ£¨Ö±½ÓÐÞ¸ÄԭʼMat¶ÔÏó£©
  68. ·½·¨Ç©Ãû void opencv.toGray (Mat src)
  69. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  70. ²ÎÊý - Mat src£º´ýת»»µÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  71. */
  72. // ʾÀý£º½«Í¼ÏñתΪ»Ò¶Èͼ
  73. const grayMat = image.getMat(); // ¼ÙÉè´Óimage¶ÔÏó»ñÈ¡Mat
  74. opencv.toGray(grayMat);
  75. print.log("ͼÏñÒÑתΪ»Ò¶Èͼ£º", grayMat);


  76. // µÚÁù¸ö·½·¨£º📌extractRegion - ͼÏñ²ÃÇУ¨´Ó´óͼÖнØÍ¼²ÃÇУ©
  77. /*
  78. Àà±ð ÏêÇé˵Ã÷
  79. ·½·¨¹¦ÄÜ °´°Ù·Ö±ÈÇøÓò²ÃÇÐͼÏñ£¬¿ÉÑ¡Ôñ½ö±£Áô²ÃÇв¿·Ö»ò±£Áôԭͼ´óС£¨ÆäËûÇøÓò±ä°×£©
  80. ·½·¨Ç©Ãû void opencv.extractRegion (Mat sourceImage, Double[] roiPercent, Boolean iscut)
  81. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  82. ²ÎÊý - Mat sourceImage£º´ý²ÃÇеÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  83. - Double[] roiPercent£º²ÃÇÐÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]
  84. - Boolean iscut£º²ÃÇÐģʽ£¨true½ö±£Áô²ÃÇÐÇøÓò£»false±£Áôԭͼ´óС£¬ÆäËûÇøÓò±ä°×£©
  85. */
  86. // ʾÀý£º²ÃÇÐͼÏñÖмä50%ÇøÓò²¢½ö±£Áô²ÃÇв¿·Ö
  87. opencv.extractRegion(mat, [0.25, 0.25, 0.5, 0.5], true);
  88. print.log("ͼÏñÒѲÃÇУº", mat);


  89. // µÚÆß¸ö·½·¨£º📌threshold - ͼÏñ¶þÖµ»¯´¦Àí
  90. /*
  91. Àà±ð ÏêÇé˵Ã÷
  92. ·½·¨¹¦ÄÜ ½«Í¼Ïñת»»ÎªºÚ°×¶þֵͼ£¨ÏñËØÖµÔÚ[min, max]Çø¼äÍâΪºÚÉ«£¬Çø¼äÄÚΪ°×É«£©
  93. ·½·¨Ç©Ãû void opencv.threshold (Mat src, Int32 min, Int32 max)
  94. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  95. ²ÎÊý - Mat src£º´ý¶þÖµ»¯µÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  96. - Int32 min£º¶þÖµ»¯×îСãÐÖµ£¨0-255£©
  97. - Int32 max£º¶þÖµ»¯×î´óãÐÖµ£¨0-255£©
  98. */
  99. // ʾÀý£º½ØÆÁ²¢½øÐжþÖµ»¯´¦Àí£¨º¬ºóÐøÁ÷³Ì£©
  100. const binImg = screen.screenShotFull();
  101. const binMat = binImg.getMat();
  102. opencv.threshold(binMat, 50, 200); // ãÐÖµÇø¼ä50-200

  103. // תImage²¢OCRʶ±ð
  104. const binImg2 = new Image();
  105. binImg2.readMat(binMat);
  106. const ocrRes = binImg2.ocr(0, 0, 1, 1);
  107. print.log("¶þÖµ»¯ºóOCR½á¹û£º", ocrRes);

  108. // ÊÍ·ÅÄÚ´æ
  109. binMat.close();
  110. binImg.close();
  111. binImg2.close();


  112. // µÚ°Ë¸ö·½·¨£º📌invertColor - ͼÏñÑÕÉ«·­×ª£¨·´É«´¦Àí£©
  113. /*
  114. Àà±ð ÏêÇé˵Ã÷
  115. ·½·¨¹¦ÄÜ ¶ÔͼÏñ½øÐÐÑÕÉ«·­×ª£¬½«Ã¿¸öÏñËØµÄRGBÖµ·´×ª£¨Èç°×É«¡úºÚÉ«¡¢ºìÉ«¡úÇàÉ«µÈ£©
  116. ·½·¨Ç©Ãû void opencv.invertColor (Mat src)
  117. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  118. ²ÎÊý - Mat src£º´ýÑÕÉ«·­×ªµÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  119. */
  120. // ʾÀý£º·­×ªÍ¼ÏñÑÕÉ«
  121. const invertMat = image.getMat();
  122. opencv.invertColor(invertMat);
  123. print.log("ÑÕÉ«ÒÑ·­×ªµÄͼÏñ£º", invertMat);
¸´ÖÆ´úÂë
·½·¨ 1£ºcv ÎļþÕÒͼ£¨Ä£°æÆ¥Åä cv ÕÒͼ£©
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
cv ÎļþÕÒͼ¡¢Ä£°æÆ¥Åä cv ÕÒͼ
·½·¨
Detect[] findImagesEx(String cvFile)
·µ»ØÖµ
Detect[]
²ÎÊý
String cvFile
: cv Îļþ cv Îļþ
°¸Àý
opencv.findImagesEx("")
·½·¨ 2£ºcv Îļþ OCR£¨Ä£°æÆ¥Åä OCR£©
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
cv Îļþ OCR¡¢Ä£°æÆ¥Åä OCR
·½·¨
OcrResult OCREx(String cvFile)
·µ»ØÖµ
OcrResult
²ÎÊý
String cvFile
: cv Îļþ cv Îļþ
°¸Àý
opencv.OCREx("")
·½·¨ 3£ºÄ£°æÆ¥Å䣨ͨ¹ýÄ£°æÆ¥ÅäÕÒµ½Ä¿±ê¶ÔÏó£©
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
Ä£°æÆ¥Å䣻ͨ¹ýÄ£°æÆ¥ÅäÕÒµ½Ä¿±ê¶ÔÏó
·½·¨
Detect[] templateMatch(Mat mat, String[] templates, Double threshold, Double[] roi, Boolean best)
·µ»ØÖµ
Detect[]
²ÎÊý
Mat mat
: mat ÀàÐÍͼƬ
String[] templates
: Ä£°æÍ¼Æ¬Êý×é
Double threshold
: ãÐÖµ 0-1
Double[] roi
: ÇøÓòÊý×é[0,0,1,1]

Boolean best
: ÊÇ·ñÖ»·µ»Ø×îÓŽâ
°¸Àý
opencv.templateMatch(Mat, String[], Double, Double[], true)
·½·¨ 4£ºÕÒ¶àͼ
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
ÕÒ¶àͼ
˵Ã÷
ÕÒͼ£¬¿ÉÉèÖöàÕÅÏàËÆÍ¼Æ¬£»ÕÒͼ³É¹¦·µ»ØÄ¿±êÊý×飬ʧ°Ü·µ»Ønull
·½·¨
Detect[] findImages(String[] images, Double threshold, Int32 timeOut, Int32 quality, Double[] rects)
·µ»ØÖµ
Detect[]
²ÎÊý
String[] images
: ͼƬÊý×é
Double threshold
: ÏàËÆ¶È 0-1
Int32 timeOut
: ³¬Ê±Ê±¼ä£¨ºÁÃ룬³¬Ê±Î´ÕÒµ½ÔòÍ˳ö£©
Int32 quality
: ÆÁÄ»½ØÍ¼ÖÊÁ¿£¨0 ±êÇå¡¢1 ¸ßÇå¡¢2 ³¬Ç壩
Double[] rects
: °Ù·Ö±ÈÇøÓò
°¸Àý
opencv.findImages(String[], Double, Int32, Int32, Double[])
·½·¨ 5£º×ª»Ò¶Èͼ£¨Í¼Ïñת»Ò¶Èͼ£©
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
ת»Ò¶Èͼ
˵Ã÷
ͼÏñת»Ò¶Èͼ
·½·¨
Void toGray(Mat src)
·µ»ØÖµ
Void
²ÎÊý
Mat src
: mat ͼÏñ mat ͼÏñ
°¸Àý
opencv.toGray(Mat)
·½·¨ 6£º²ÃÇÐͼƬ£¨´Ó´óͼÖнØÍ¼²ÃÇÐͼƬ£©
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
²ÃÇÐͼƬ
˵Ã÷
´Ó´óͼÖнØÍ¼²ÃÇÐͼƬ
·½·¨
Void extractRegion(Mat sourceImage, Double[] roiPercent, Boolean iscut)
·µ»ØÖµ
Void
²ÎÊý
Mat sourceImage
: mat ͼÏñ mat ͼÏñ
Double[] roiPercent
: ²ÃÇÐÇøÓò°Ù·ÖÊýÊý×é
Boolean iscut
: true
Ö»±£Áô²ÃÇв¿·Ö£¬false
ͼƬ´óС²»±ä¡¢ÆäËûÇøÓò±ä°×
°¸Àý
opencv.extractRegion(Mat, Double[], true)
·½·¨ 7£º¶þÖµ»¯
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
¶þÖµ»¯
·½·¨
Void threshold(Mat src, Int32 min, Int32 max)
·µ»ØÖµ
Void
²ÎÊý
Mat src
: mat ¸ñʽͼƬ
Int32 min
: ×îСãÐÖµ
Int32 max
: ×î´óãÐÖµ
°¸Àý
// ½ØÆÁ²¢×ª³É mat ¸ñʽ
var img = screen.screenShotFull();
var mat = img.getMat();
// ¶þÖµ»¯²Ù×÷£¨Ê¾Àýº¬ºóÐøÁ÷³Ì£º×ª Image¡¢OCR¡¢ÊÍ·ÅÄÚ´æµÈ£©
opencv.threshold(mat, 50, 200);
var img2 = new Image();
img2.readMat(mat);
printl(img2);
var ocrres = img2.ocr(0, 0, 1, 1);
printl(ocrres);
// ÊÍ·ÅÄÚ´æ
mat.close();
img.close();
img2.close();
·½·¨ 8£ºÑÕÉ«·­×ª
Àà±ð
ÄÚÈÝ
Ö÷Ìâ
ÑÕÉ«·­×ª
·½·¨
Void invertColor(Mat src)
·µ»ØÖµ
Void
²ÎÊý
Mat src
: mat ¸ñʽͼƬ
°¸Àý
opencv.invertColor(Mat)
ʵսʵÀý£º
  1. // ... existing code ...

  2. /*
  3. 🍎½»Á÷ QQ Ⱥ 711841924 Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639
  4. 🍎OpenCV ͼÏñ´¦Àí·½·¨Ð¡½á
  5. */

  6. //🍎OpenCV Àà [opencv] ·½·¨Ð¡½á

  7. // µÚÒ»¸ö·½·¨£º📌findImagesEx - cvÎļþÕÒͼ£¨Ä£°åÆ¥ÅäcvÕÒͼ£©
  8. /*
  9. Àà±ð ÏêÇé˵Ã÷
  10. ·½·¨¹¦ÄÜ »ùÓÚcvÎļþ½øÐÐÄ£°åÆ¥ÅäÕÒͼ£¬·µ»ØÆ¥Åäµ½µÄÄ¿±êÊý×é
  11. ·½·¨Ç©Ãû Detect[] opencv.findImagesEx (String cvFile)
  12. ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飬ÿ¸öÔªËØ°üº¬Î»Öá¢ÏàËÆ¶ÈµÈÐÅÏ¢£©
  13. ²ÎÊý - String cvFile£ºcv¸ñʽµÄÄ£°åÎļþ·¾¶
  14. */
  15. // ʾÀý£º»ùÓÚcvÎļþÕÒͼ
  16. function findImagesExExample() {
  17.     printl("=== findImagesEx ·½·¨Ê¾Àý ===");
  18.     try {
  19.         // ʹÓÃcvÎļþ²éÕÒͼÏñ
  20.         let findResults = opencv.findImagesEx("ͼɫ961575.cv");
  21.         printl("cvÎļþÕÒͼ½á¹û£º", findResults);
  22.         
  23.         if (findResults && findResults.length > 0) {
  24.             printl("ÕÒµ½ " + findResults.length + " ¸öÆ¥ÅäÄ¿±ê");
  25.             for (let i = 0; i < findResults.length; i++) {
  26.                 let result = findResults[i];
  27.                 printl("  Ä¿±ê" + (i+1) + ": ÏàËÆ¶È=" + result.score() + ", λÖÃ=" + result.getRect().toString());
  28.             }
  29.         } else {
  30.             printl("δÕÒµ½Æ¥ÅäÄ¿±ê");
  31.         }
  32.     } catch (error) {
  33.         printl("findImagesExÖ´Ðгö´í: " + error.message);
  34.     }
  35. }
  36. // µ÷ÓÃʾÀý
  37. findImagesExExample();


  38. // µÚ¶þ¸ö·½·¨£º&#128204;OCREx - cvÎļþOCR£¨Ä£°åÆ¥ÅäOCR£©
  39. /*
  40. Àà±ð ÏêÇé˵Ã÷
  41. ·½·¨¹¦ÄÜ »ùÓÚcvÎļþÄ£°å½øÐÐÎÄ×Öʶ±ð£¬·µ»ØOCRʶ±ð½á¹û
  42. ·½·¨Ç©Ãû OcrResult opencv.OCREx (String cvFile)
  43. ·µ»ØÖµ OcrResult£¨OCRʶ±ð½á¹û¶ÔÏ󣬰üº¬Ê¶±ðµ½µÄÎÄ×Ö¼°Î»ÖÃÐÅÏ¢£©
  44. ²ÎÊý - String cvFile£ºcv¸ñʽµÄOCRÄ£°åÎļþ·¾¶
  45. */
  46. // ʾÀý£º»ùÓÚcvÎļþ½øÐÐOCRʶ±ð
  47. function ocrExExample() {
  48.     printl("=== OCREx ·½·¨Ê¾Àý ===");
  49.     try {
  50.         var ocr1=opencv.OCREx('ͼɫ995593.cv');
  51.         if(ocr1!=null){
  52.            printl(ocr1.getAllString());
  53.         } else {
  54.            printl("OCRʶ±ðʧ°Ü»òδʶ±ðµ½ÎÄ×Ö");
  55.         }
  56.     } catch (error) {
  57.         printl("OCRExÖ´Ðгö´í: " + error.message);
  58.     }
  59. }
  60. // µ÷ÓÃʾÀý
  61. ocrExExample();


  62. // µÚÈý¸ö·½·¨£º&#128204;templateMatch - ¶àÄ£°åÆ¥Åä²éÕÒÄ¿±ê¶ÔÏó
  63. /*
  64. Àà±ð ÏêÇé˵Ã÷
  65. ·½·¨¹¦ÄÜ »ùÓÚ¶à¸öÄ£°åͼƬÔÚÖ¸¶¨Í¼ÏñÖÐÆ¥ÅäÄ¿±ê£¬¿ÉÉèÖÃÆ¥ÅäÇøÓò¡¢ãÐÖµµÈ
  66. ·½·¨Ç©Ãû Detect[] opencv.templateMatch (Mat mat, String[] templates, Double threshold, Double[] roi, Boolean best)
  67. ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飩
  68. ²ÎÊý - Mat mat£º´ýÆ¥ÅäµÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  69. - String[] templates£ºÄ£°åͼƬ·¾¶Êý×é
  70. - Double threshold£ºÆ¥ÅäãÐÖµ£¨0-1£¬ÖµÔ½¸ßÆ¥ÅäÔ½Ñϸñ£©
  71. - Double[] roi£ºÆ¥ÅäÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ [0,0,1,1]
  72. - Boolean best£ºÊÇ·ñÖ»·µ»Ø×îÓÅÆ¥Åä½á¹û£¨trueÔòÖ»·µ»Ø×î¼ÑÆ¥Å䣬false·µ»ØËùÓзûºÏãÐÖµµÄ½á¹û£©
  73. */
  74. // ʾÀý£º¶àÄ£°åÆ¥ÅäÖ¸¶¨ÇøÓò
  75. function templateMatchExample() {
  76.     printl("=== templateMatch ·½·¨Ê¾Àý ===");
  77.     try {
  78.         // ½ØÍ¼»ñȡͼÏñ
  79.         const screenshot = screen.screenShotFull();
  80.         const mat = screenshot.getMat();
  81.         
  82.         // ¶¨ÒåÄ£°åͼƬ·¾¶Êý×飨Çë¸ù¾Ýʵ¼ÊÇé¿öÐ޸ķ¾¶£©
  83.         const templates = ["./template1.png", "./template2.png"];
  84.         
  85.         // ÔÚÖ¸¶¨ÇøÓò½øÐÐÄ£°åÆ¥Åä
  86.         const matchResults = opencv.templateMatch(mat, templates, 0.8, [0.2, 0.2, 0.6, 0.6], true);
  87.         printl("Ä£°åÆ¥Åä½á¹û£º", matchResults);
  88.         
  89.         if (matchResults && matchResults.length > 0) {
  90.             printl("ÕÒµ½ " + matchResults.length + " ¸öÆ¥ÅäÄ¿±ê");
  91.             for (let i = 0; i < matchResults.length; i++) {
  92.                 let result = matchResults[i];
  93.                 printl("  Ä¿±ê" + (i+1) + ": ÏàËÆ¶È=" + result.score() + ", λÖÃ=" + result.getRect().toString());
  94.             }
  95.         } else {
  96.             printl("δÕÒµ½Æ¥ÅäÄ¿±ê");
  97.         }
  98.         
  99.         // ÊÍ·Å×ÊÔ´
  100.         mat.close();
  101.         screenshot.close();
  102.     } catch (error) {
  103.         printl("templateMatchÖ´Ðгö´í: " + error.message);
  104.     }
  105. }
  106. // µ÷ÓÃʾÀý
  107. // templateMatchExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý


  108. // µÚËĸö·½·¨£º&#128204;findImages - ¶àͼ²éÕÒ£¨Ö§³Ö³¬Ê±ºÍÖÊÁ¿ÉèÖã©
  109. /*
  110. Àà±ð ÏêÇé˵Ã÷
  111. ·½·¨¹¦ÄÜ Í¬Ê±²éÕÒ¶àÕÅÏàËÆÍ¼Æ¬£¬³¬Ê±Î´ÕÒµ½Ôò·µ»Ønull£»¿ÉÉèÖýØÍ¼ÖÊÁ¿¡¢³¬Ê±Ê±¼äµÈ
  112. ·½·¨Ç©Ãû Detect[]|null opencv.findImages (String[] images, Double threshold, Int32 timeOut, Int32 quality, Double[] rects)
  113. ·µ»ØÖµ Detect[]|null£¨Æ¥Åä³É¹¦·µ»ØÄ¿±êÊý×飬ʧ°Ü·µ»Ønull£©
  114. ²ÎÊý - String[] images£º´ý²éÕÒµÄͼƬ·¾¶Êý×é
  115. - Double threshold£ºÏàËÆ¶ÈãÐÖµ£¨0-1£©
  116. - Int32 timeOut£º³¬Ê±Ê±¼ä£¨ºÁÃ룬³¬¹ý¸Ãʱ¼äδÕÒµ½Ôò·µ»Ønull£©
  117. - Int32 quality£ºÆÁÄ»½ØÍ¼ÖÊÁ¿£¨0£º±êÇ壬1£º¸ßÇ壬2£º³¬Ç壩
  118. - Double[] rects£º²éÕÒÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ
  119. */
  120. // ʾÀý£º¶àͼ²éÕÒ²¢ÉèÖó¬Ê±
  121. function findImagesExample() {
  122.     printl("=== findImages ·½·¨Ê¾Àý ===");
  123.     try {
  124.         // ¶¨ÒåÒª²éÕÒµÄͼƬ·¾¶Êý×飨Çë¸ù¾Ýʵ¼ÊÇé¿öÐ޸ķ¾¶£©
  125.         const targetImages = ["ͼɫ961575.cv"];
  126.         
  127.         // ²éÕÒͼƬ£¬ÉèÖÃãÐÖµ0.7£¬³¬Ê±Ê±¼ä3000ms£¬¸ßÇåÖÊÁ¿£¬È«Í¼²éÕÒ
  128.         const multiFindResults = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
  129.         
  130.         if (multiFindResults) {
  131.             printl("¶àͼ²éÕҳɹ¦£¬½á¹û£º", multiFindResults);
  132.             printl("ÕÒµ½ " + multiFindResults.length + " ¸öÆ¥ÅäÄ¿±ê");
  133.             for (let i = 0; i < multiFindResults.length; i++) {
  134.                 let result = multiFindResults[i];
  135.                 printl("  Ä¿±ê" + (i+1) + ": ÏàËÆ¶È=" + result.score() + ", λÖÃ=" + result.getRect().toString());
  136.             }
  137.         } else {
  138.             printl("¶àͼ²éÕÒ³¬Ê±»òʧ°Ü");
  139.         }
  140.     } catch (error) {
  141.         printl("findImagesÖ´Ðгö´í: " + error.message); // ÐÞ¸´£ºÊ¹ÓÃprintl¶ø²»ÊÇprint.err
  142.     }
  143. }
  144. // µ÷ÓÃʾÀý
  145. findImagesExample();


  146. // µÚÎå¸ö·½·¨£º&#128204;toGray - ͼÏñת»Ò¶Èͼ
  147. /*
  148. Àà±ð ÏêÇé˵Ã÷
  149. ·½·¨¹¦ÄÜ ½«ÊäÈëµÄMatͼÏñת»»Îª»Ò¶Èͼ£¨Ö±½ÓÐÞ¸ÄԭʼMat¶ÔÏó£©
  150. ·½·¨Ç©Ãû void opencv.toGray (Mat src)
  151. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  152. ²ÎÊý - Mat src£º´ýת»»µÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  153. */
  154. // ʾÀý£º½«Í¼ÏñתΪ»Ò¶Èͼ
  155. function toGrayExample() {
  156.     printl("=== toGray ·½·¨Ê¾Àý ===");
  157.     try {
  158.         // ½ØÍ¼»ñȡͼÏñ
  159.         const grayImage = screen.screenShotFull();
  160.         const grayMat = grayImage.getMat();
  161.         
  162.         // ת»»Îª»Ò¶Èͼ
  163.         opencv.toGray(grayMat);
  164.         printl("ͼÏñÒÑתΪ»Ò¶Èͼ");
  165.         
  166.         // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
  167.         // grayImage.save("/sdcard/gray_image.png");
  168.         
  169.         // ÊÍ·Å×ÊÔ´
  170.         grayMat.close();
  171.         grayImage.close();
  172.     } catch (error) {
  173.         printl("toGrayÖ´Ðгö´í: " + error.message);
  174.     }
  175. }
  176. // µ÷ÓÃʾÀý
  177. // toGrayExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý


  178. // µÚÁù¸ö·½·¨£º&#128204;extractRegion - ͼÏñ²ÃÇУ¨´Ó´óͼÖнØÍ¼²ÃÇУ©
  179. /*
  180. Àà±ð ÏêÇé˵Ã÷
  181. ·½·¨¹¦ÄÜ °´°Ù·Ö±ÈÇøÓò²ÃÇÐͼÏñ£¬¿ÉÑ¡Ôñ½ö±£Áô²ÃÇв¿·Ö»ò±£Áôԭͼ´óС£¨ÆäËûÇøÓò±ä°×£©
  182. ·½·¨Ç©Ãû void opencv.extractRegion (Mat sourceImage, Double[] roiPercent, Boolean iscut)
  183. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  184. ²ÎÊý - Mat sourceImage£º´ý²ÃÇеÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  185. - Double[] roiPercent£º²ÃÇÐÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]
  186. - Boolean iscut£º²ÃÇÐģʽ£¨true½ö±£Áô²ÃÇÐÇøÓò£»false±£Áôԭͼ´óС£¬ÆäËûÇøÓò±ä°×£©
  187. */
  188. // ʾÀý£º²ÃÇÐͼÏñÖмä50%ÇøÓò²¢½ö±£Áô²ÃÇв¿·Ö
  189. function extractRegionExample() {
  190.     printl("=== extractRegion ·½·¨Ê¾Àý ===");
  191.     try {
  192.         // ½ØÍ¼»ñȡͼÏñ
  193.         const extractImage = screen.screenShotFull();
  194.         const extractMat = extractImage.getMat();
  195.         
  196.         // ²ÃÇÐͼÏñÖмä50%ÇøÓò²¢½ö±£Áô²ÃÇв¿·Ö
  197.         opencv.extractRegion(extractMat, [0.25, 0.25, 0.5, 0.5], true);
  198.         printl("ͼÏñÒѲÃÇÐ");
  199.         
  200.         // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
  201.         // extractImage.save("/sdcard/cropped_image.png");
  202.         
  203.         // ÊÍ·Å×ÊÔ´
  204.         extractMat.close();
  205.         extractImage.close();
  206.     } catch (error) {
  207.         printl("extractRegionÖ´Ðгö´í: " + error.message);
  208.     }
  209. }
  210. // µ÷ÓÃʾÀý
  211. // extractRegionExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý


  212. // µÚÆß¸ö·½·¨£º&#128204;threshold - ͼÏñ¶þÖµ»¯´¦Àí
  213. /*
  214. Àà±ð ÏêÇé˵Ã÷
  215. ·½·¨¹¦ÄÜ ½«Í¼Ïñת»»ÎªºÚ°×¶þֵͼ£¨ÏñËØÖµÔÚ[min, max]Çø¼äÍâΪºÚÉ«£¬Çø¼äÄÚΪ°×É«£©
  216. ·½·¨Ç©Ãû void opencv.threshold (Mat src, Int32 min, Int32 max)
  217. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  218. ²ÎÊý - Mat src£º´ý¶þÖµ»¯µÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  219. - Int32 min£º¶þÖµ»¯×îСãÐÖµ£¨0-255£©
  220. - Int32 max£º¶þÖµ»¯×î´óãÐÖµ£¨0-255£©
  221. */
  222. // ʾÀý£º½ØÆÁ²¢½øÐжþÖµ»¯´¦Àí£¨º¬ºóÐøÁ÷³Ì£©
  223. function thresholdExample() {
  224.     printl("=== threshold ·½·¨Ê¾Àý ===");
  225.     try {
  226.         // ½ØÍ¼»ñȡͼÏñ
  227.         const binImg = screen.screenShotFull();
  228.         const binMat = binImg.getMat();
  229.         
  230.         // ½øÐжþÖµ»¯´¦Àí£¬ãÐÖµÇø¼ä50-200
  231.         opencv.threshold(binMat, 50, 200);
  232.         printl("ͼÏñÒѶþÖµ»¯´¦Àí");
  233.         
  234.         // תImage²¢OCRʶ±ð
  235.         const binImg2 = new Image();
  236.         binImg2.readMat(binMat);
  237.         var ocr2 = binImg2.ocr(0, 0, 1, 1);
  238.         if(ocr2!=null){
  239.            printl(ocr2.getAllString());
  240.         } else {
  241.            printl("¶þÖµ»¯ºóOCRʶ±ðʧ°Ü");
  242.         }
  243.         
  244.         // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
  245.         // binImg.save("/sdcard/binary_image.png");
  246.         
  247.         // ÊÍ·ÅÄÚ´æ
  248.         binMat.close();
  249.         binImg.close();
  250.         binImg2.close();
  251.     } catch (error) {
  252.         printl("thresholdÖ´Ðгö´í: " + error.message);
  253.     }
  254. }
  255. // µ÷ÓÃʾÀý
  256. // thresholdExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý


  257. // µÚ°Ë¸ö·½·¨£º&#128204;invertColor - ͼÏñÑÕÉ«·­×ª£¨·´É«´¦Àí£©
  258. /*
  259. Àà±ð ÏêÇé˵Ã÷
  260. ·½·¨¹¦ÄÜ ¶ÔͼÏñ½øÐÐÑÕÉ«·­×ª£¬½«Ã¿¸öÏñËØµÄRGBÖµ·´×ª£¨Èç°×É«¡úºÚÉ«¡¢ºìÉ«¡úÇàÉ«µÈ£©
  261. ·½·¨Ç©Ãû void opencv.invertColor (Mat src)
  262. ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
  263. ²ÎÊý - Mat src£º´ýÑÕÉ«·­×ªµÄԭʼͼÏñ£¨Mat¶ÔÏó£©
  264. */
  265. // ʾÀý£º·­×ªÍ¼ÏñÑÕÉ«
  266. function invertColorExample() {
  267.     printl("=== invertColor ·½·¨Ê¾Àý ===");
  268.     try {
  269.         // ½ØÍ¼»ñȡͼÏñ
  270.         const invertImage = screen.screenShotFull();
  271.         const invertMat = invertImage.getMat();
  272.         
  273.         // ·­×ªÍ¼ÏñÑÕÉ«
  274.         opencv.invertColor(invertMat);
  275.         printl("ÑÕÉ«ÒÑ·­×ªµÄͼÏñ");
  276.         
  277.         // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
  278.         // invertImage.save("/sdcard/inverted_image.png");
  279.         
  280.         // ÊÍ·Å×ÊÔ´
  281.         invertMat.close();
  282.         invertImage.close();
  283.     } catch (error) {
  284.         printl("invertColorÖ´Ðгö´í: " + error.message);
  285.     }
  286. }
  287. // µ÷ÓÃʾÀý
  288. // invertColorExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý


  289. // ========================== ʵ¼Ê¿ÉÓõÄÍêÕûʾÀý ==========================

  290. /**
  291. * ʵ¼Ê¿ÉÓõÄOpenCVͼÏñ´¦ÀíʾÀý
  292. * ÑÝʾÍêÕûµÄͼÏñ´¦ÀíÁ÷³Ì
  293. */
  294. async function practicalOpenCVExample() {
  295.     printl("=== OpenCVÍêÕû´¦ÀíÁ÷³ÌʾÀý ===");
  296.    
  297.     try {
  298.         // 1. È«ÆÁ½ØÍ¼
  299.         printl("1. Ö´ÐÐÈ«ÆÁ½ØÍ¼");
  300.         const screenshot = screen.screenShotFull();
  301.         const mat = screenshot.getMat();
  302.         printl("   ½ØÍ¼Íê³É£¬Í¼Ïñ³ß´ç: " + mat.width + "x" + mat.height);
  303.         
  304.         // 2. ͼÏñÔ¤´¦Àí - תΪ»Ò¶Èͼ
  305.         printl("2. ͼÏñתΪ»Ò¶Èͼ");
  306.         opencv.toGray(mat);
  307.         
  308.         // 3. ʹÓÃcvÎļþ²éÕÒͼÏñ
  309.         printl("3. ʹÓÃcvÎļþ²éÕÒͼÏñ");
  310.         const findResults = opencv.findImagesEx("ͼɫ961575.cv");
  311.         if (findResults && findResults.length > 0) {
  312.             printl("   ÕÒµ½ " + findResults.length + " ¸öÆ¥ÅäÄ¿±ê");
  313.             const firstResult = findResults[0];
  314.             printl("   µÚÒ»¸öÆ¥ÅäÄ¿±êÏàËÆ¶È: " + firstResult.score());
  315.             printl("   Î»ÖÃÐÅÏ¢: " + firstResult.getRect().toString());
  316.         } else {
  317.             printl("   Î´ÕÒµ½Æ¥ÅäÄ¿±ê");
  318.         }
  319.         
  320.         // 4. ʹÓÃcvÎļþ½øÐÐOCRʶ±ð
  321.         printl("4. ʹÓÃcvÎļþ½øÐÐOCRʶ±ð");
  322.         var ocrResult=opencv.OCREx('ͼɫ995593.cv');
  323.         if(ocrResult!=null){
  324.            printl(ocrResult.getAllString());
  325.         } else {
  326.            printl("OCRʶ±ðʧ°Ü»òδʶ±ðµ½ÎÄ×Ö");
  327.         }
  328.         
  329.         // 5. ͼÏñ¶þÖµ»¯´¦Àí
  330.         printl("5. ͼÏñ¶þÖµ»¯´¦Àí");
  331.         opencv.threshold(mat, 100, 200);
  332.         printl("   ¶þÖµ»¯´¦ÀíÍê³É");
  333.         
  334.         // 6. ÑÕÉ«·­×ª
  335.         printl("6. ͼÏñÑÕÉ«·­×ª");
  336.         opencv.invertColor(mat);
  337.         printl("   ÑÕÉ«·­×ªÍê³É");
  338.         
  339.         // 7. ²ÃÇÐͼÏñ
  340.         printl("7. ²ÃÇÐͼÏñÖмäÇøÓò");
  341.         opencv.extractRegion(mat, [0.25, 0.25, 0.5, 0.5], true);
  342.         printl("   Í¼Ïñ²ÃÇÐÍê³É");
  343.         
  344.         // ÊÍ·Å×ÊÔ´
  345.         mat.close();
  346.         screenshot.close();
  347.         printl("8. ×ÊÔ´ÊÍ·ÅÍê³É");
  348.         
  349.     } catch (error) {
  350.         printl("Ö´Ðйý³ÌÖз¢Éú´íÎó: " + error.message);
  351.     }
  352.    
  353.     printl("=== OpenCVͼÏñ´¦ÀíʾÀý½áÊø ===");
  354. }

  355. // ÔËÐÐʵ¼ÊʾÀý
  356. practicalOpenCVExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý

  357. // ... existing code ...
¸´ÖÆ´úÂë



»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2025-9-9 19:36 , Processed in 0.306600 second(s), 35 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí