|
AIWROKÈí¼þÆ»¹ûIOSϵͳͼɫÊÓ¾õ[opencv]·½·¨Ð¡½á
- /*
- 🍎½»Á÷ QQ Ⱥ 711841924 Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639
- 🍎OpenCV ͼÏñ´¦Àí·½·¨Ð¡½á
- */
- //🍎OpenCV Àà [opencv] ·½·¨Ð¡½á
- // µÚÒ»¸ö·½·¨£º📌findImagesEx - cvÎļþÕÒͼ£¨Ä£°åÆ¥ÅäcvÕÒͼ£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ùÓÚcvÎļþ½øÐÐÄ£°åÆ¥ÅäÕÒͼ£¬·µ»ØÆ¥Åäµ½µÄÄ¿±êÊý×é
- ·½·¨Ç©Ãû Detect[] opencv.findImagesEx (String cvFile)
- ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飬ÿ¸öÔªËØ°üº¬Î»Öá¢ÏàËÆ¶ÈµÈÐÅÏ¢£©
- ²ÎÊý - String cvFile£ºcv¸ñʽµÄÄ£°åÎļþ·¾¶
- */
- // ʾÀý£º»ùÓÚcvÎļþÕÒͼ
- let findResults = opencv.findImagesEx("./template.cv");
- print.log("cvÎļþÕÒͼ½á¹û£º", findResults);
- // µÚ¶þ¸ö·½·¨£º📌OCREx - cvÎļþOCR£¨Ä£°åÆ¥ÅäOCR£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ùÓÚcvÎļþÄ£°å½øÐÐÎÄ×Öʶ±ð£¬·µ»ØOCRʶ±ð½á¹û
- ·½·¨Ç©Ãû OcrResult opencv.OCREx (String cvFile)
- ·µ»ØÖµ OcrResult£¨OCRʶ±ð½á¹û¶ÔÏ󣬰üº¬Ê¶±ðµ½µÄÎÄ×Ö¼°Î»ÖÃÐÅÏ¢£©
- ²ÎÊý - String cvFile£ºcv¸ñʽµÄOCRÄ£°åÎļþ·¾¶
- */
- // ʾÀý£º»ùÓÚcvÎļþ½øÐÐOCRʶ±ð
- let ocrResult = opencv.OCREx("./textTemplate.cv");
- print.log("OCRʶ±ðÎÄ×Ö£º", ocrResult.text);
- // µÚÈý¸ö·½·¨£º📌templateMatch - ¶àÄ£°åÆ¥Åä²éÕÒÄ¿±ê¶ÔÏó
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ùÓÚ¶à¸öÄ£°åͼƬÔÚÖ¸¶¨Í¼ÏñÖÐÆ¥ÅäÄ¿±ê£¬¿ÉÉèÖÃÆ¥ÅäÇøÓò¡¢ãÐÖµµÈ
- ·½·¨Ç©Ãû Detect[] opencv.templateMatch (Mat mat, String[] templates, Double threshold, Double[] roi, Boolean best)
- ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飩
- ²ÎÊý - Mat mat£º´ýÆ¥ÅäµÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- - String[] templates£ºÄ£°åͼƬ·¾¶Êý×é
- - Double threshold£ºÆ¥ÅäãÐÖµ£¨0-1£¬ÖµÔ½¸ßÆ¥ÅäÔ½Ñϸñ£©
- - Double[] roi£ºÆ¥ÅäÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ [0,0,1,1]
- - Boolean best£ºÊÇ·ñÖ»·µ»Ø×îÓÅÆ¥Åä½á¹û£¨trueÔòÖ»·µ»Ø×î¼ÑÆ¥Å䣬false·µ»ØËùÓзûºÏãÐÖµµÄ½á¹û£©
- */
- // ʾÀý£º¶àÄ£°åÆ¥ÅäÖ¸¶¨ÇøÓò
- const templates = ["./tpl1.png", "./tpl2.png"];
- const matchResults = opencv.templateMatch(mat, templates, 0.8, [0.2, 0.2, 0.6, 0.6], true);
- print.log("Ä£°åÆ¥Åä½á¹û£º", matchResults);
- // µÚËĸö·½·¨£º📌findImages - ¶àͼ²éÕÒ£¨Ö§³Ö³¬Ê±ºÍÖÊÁ¿ÉèÖã©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ Í¬Ê±²éÕÒ¶àÕÅÏàËÆÍ¼Æ¬£¬³¬Ê±Î´ÕÒµ½Ôò·µ»Ønull£»¿ÉÉèÖýØÍ¼ÖÊÁ¿¡¢³¬Ê±Ê±¼äµÈ
- ·½·¨Ç©Ãû Detect[]|null opencv.findImages (String[] images, Double threshold, Int32 timeOut, Int32 quality, Double[] rects)
- ·µ»ØÖµ Detect[]|null£¨Æ¥Åä³É¹¦·µ»ØÄ¿±êÊý×飬ʧ°Ü·µ»Ønull£©
- ²ÎÊý - String[] images£º´ý²éÕÒµÄͼƬ·¾¶Êý×é
- - Double threshold£ºÏàËÆ¶ÈãÐÖµ£¨0-1£©
- - Int32 timeOut£º³¬Ê±Ê±¼ä£¨ºÁÃ룬³¬¹ý¸Ãʱ¼äδÕÒµ½Ôò·µ»Ønull£©
- - Int32 quality£ºÆÁÄ»½ØÍ¼ÖÊÁ¿£¨0£º±êÇ壬1£º¸ßÇ壬2£º³¬Ç壩
- - Double[] rects£º²éÕÒÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ
- */
- // ʾÀý£º¶àͼ²éÕÒ²¢ÉèÖó¬Ê±
- const targetImages = ["./img1.png", "./img2.png"];
- const multiFindResults = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
- if (multiFindResults) {
- print.log("¶àͼ²éÕҳɹ¦£¬½á¹û£º", multiFindResults);
- } else {
- print.err("¶àͼ²éÕÒ³¬Ê±»òʧ°Ü");
- }
- // µÚÎå¸ö·½·¨£º📌toGray - ͼÏñת»Ò¶Èͼ
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ½«ÊäÈëµÄMatͼÏñת»»Îª»Ò¶Èͼ£¨Ö±½ÓÐÞ¸ÄÔʼMat¶ÔÏó£©
- ·½·¨Ç©Ãû void opencv.toGray (Mat src)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat src£º´ýת»»µÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- */
- // ʾÀý£º½«Í¼ÏñתΪ»Ò¶Èͼ
- const grayMat = image.getMat(); // ¼ÙÉè´Óimage¶ÔÏó»ñÈ¡Mat
- opencv.toGray(grayMat);
- print.log("ͼÏñÒÑתΪ»Ò¶Èͼ£º", grayMat);
- // µÚÁù¸ö·½·¨£º📌extractRegion - ͼÏñ²ÃÇУ¨´Ó´óͼÖнØÍ¼²ÃÇУ©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ °´°Ù·Ö±ÈÇøÓò²ÃÇÐͼÏñ£¬¿ÉÑ¡Ôñ½ö±£Áô²ÃÇв¿·Ö»ò±£ÁôÔͼ´óС£¨ÆäËûÇøÓò±ä°×£©
- ·½·¨Ç©Ãû void opencv.extractRegion (Mat sourceImage, Double[] roiPercent, Boolean iscut)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat sourceImage£º´ý²ÃÇеÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- - Double[] roiPercent£º²ÃÇÐÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]
- - Boolean iscut£º²ÃÇÐģʽ£¨true½ö±£Áô²ÃÇÐÇøÓò£»false±£ÁôÔͼ´óС£¬ÆäËûÇøÓò±ä°×£©
- */
- // ʾÀý£º²ÃÇÐͼÏñÖмä50%ÇøÓò²¢½ö±£Áô²ÃÇв¿·Ö
- opencv.extractRegion(mat, [0.25, 0.25, 0.5, 0.5], true);
- print.log("ͼÏñÒѲÃÇУº", mat);
- // µÚÆß¸ö·½·¨£º📌threshold - ͼÏñ¶þÖµ»¯´¦Àí
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ½«Í¼Ïñת»»ÎªºÚ°×¶þֵͼ£¨ÏñËØÖµÔÚ[min, max]Çø¼äÍâΪºÚÉ«£¬Çø¼äÄÚΪ°×É«£©
- ·½·¨Ç©Ãû void opencv.threshold (Mat src, Int32 min, Int32 max)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat src£º´ý¶þÖµ»¯µÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- - Int32 min£º¶þÖµ»¯×îСãÐÖµ£¨0-255£©
- - Int32 max£º¶þÖµ»¯×î´óãÐÖµ£¨0-255£©
- */
- // ʾÀý£º½ØÆÁ²¢½øÐжþÖµ»¯´¦Àí£¨º¬ºóÐøÁ÷³Ì£©
- const binImg = screen.screenShotFull();
- const binMat = binImg.getMat();
- opencv.threshold(binMat, 50, 200); // ãÐÖµÇø¼ä50-200
- // תImage²¢OCRʶ±ð
- const binImg2 = new Image();
- binImg2.readMat(binMat);
- const ocrRes = binImg2.ocr(0, 0, 1, 1);
- print.log("¶þÖµ»¯ºóOCR½á¹û£º", ocrRes);
- // ÊÍ·ÅÄÚ´æ
- binMat.close();
- binImg.close();
- binImg2.close();
- // µÚ°Ë¸ö·½·¨£º📌invertColor - ͼÏñÑÕÉ«·×ª£¨·´É«´¦Àí£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ¶ÔͼÏñ½øÐÐÑÕÉ«·×ª£¬½«Ã¿¸öÏñËØµÄRGBÖµ·´×ª£¨Èç°×É«¡úºÚÉ«¡¢ºìÉ«¡úÇàÉ«µÈ£©
- ·½·¨Ç©Ãû void opencv.invertColor (Mat src)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat src£º´ýÑÕÉ«·×ªµÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- */
- // ʾÀý£º·×ªÍ¼ÏñÑÕÉ«
- const invertMat = image.getMat();
- opencv.invertColor(invertMat);
- 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) |
ʵսʵÀý£º - // ... existing code ...
- /*
- 🍎½»Á÷ QQ Ⱥ 711841924 Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639
- 🍎OpenCV ͼÏñ´¦Àí·½·¨Ð¡½á
- */
- //🍎OpenCV Àà [opencv] ·½·¨Ð¡½á
- // µÚÒ»¸ö·½·¨£º📌findImagesEx - cvÎļþÕÒͼ£¨Ä£°åÆ¥ÅäcvÕÒͼ£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ùÓÚcvÎļþ½øÐÐÄ£°åÆ¥ÅäÕÒͼ£¬·µ»ØÆ¥Åäµ½µÄÄ¿±êÊý×é
- ·½·¨Ç©Ãû Detect[] opencv.findImagesEx (String cvFile)
- ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飬ÿ¸öÔªËØ°üº¬Î»Öá¢ÏàËÆ¶ÈµÈÐÅÏ¢£©
- ²ÎÊý - String cvFile£ºcv¸ñʽµÄÄ£°åÎļþ·¾¶
- */
- // ʾÀý£º»ùÓÚcvÎļþÕÒͼ
- function findImagesExExample() {
- printl("=== findImagesEx ·½·¨Ê¾Àý ===");
- try {
- // ʹÓÃcvÎļþ²éÕÒͼÏñ
- let findResults = opencv.findImagesEx("ͼɫ961575.cv");
- printl("cvÎļþÕÒͼ½á¹û£º", findResults);
-
- if (findResults && findResults.length > 0) {
- printl("ÕÒµ½ " + findResults.length + " ¸öÆ¥ÅäÄ¿±ê");
- for (let i = 0; i < findResults.length; i++) {
- let result = findResults[i];
- printl(" Ä¿±ê" + (i+1) + ": ÏàËÆ¶È=" + result.score() + ", λÖÃ=" + result.getRect().toString());
- }
- } else {
- printl("δÕÒµ½Æ¥ÅäÄ¿±ê");
- }
- } catch (error) {
- printl("findImagesExÖ´Ðгö´í: " + error.message);
- }
- }
- // µ÷ÓÃʾÀý
- findImagesExExample();
- // µÚ¶þ¸ö·½·¨£º📌OCREx - cvÎļþOCR£¨Ä£°åÆ¥ÅäOCR£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ùÓÚcvÎļþÄ£°å½øÐÐÎÄ×Öʶ±ð£¬·µ»ØOCRʶ±ð½á¹û
- ·½·¨Ç©Ãû OcrResult opencv.OCREx (String cvFile)
- ·µ»ØÖµ OcrResult£¨OCRʶ±ð½á¹û¶ÔÏ󣬰üº¬Ê¶±ðµ½µÄÎÄ×Ö¼°Î»ÖÃÐÅÏ¢£©
- ²ÎÊý - String cvFile£ºcv¸ñʽµÄOCRÄ£°åÎļþ·¾¶
- */
- // ʾÀý£º»ùÓÚcvÎļþ½øÐÐOCRʶ±ð
- function ocrExExample() {
- printl("=== OCREx ·½·¨Ê¾Àý ===");
- try {
- var ocr1=opencv.OCREx('ͼɫ995593.cv');
- if(ocr1!=null){
- printl(ocr1.getAllString());
- } else {
- printl("OCRʶ±ðʧ°Ü»òδʶ±ðµ½ÎÄ×Ö");
- }
- } catch (error) {
- printl("OCRExÖ´Ðгö´í: " + error.message);
- }
- }
- // µ÷ÓÃʾÀý
- ocrExExample();
- // µÚÈý¸ö·½·¨£º📌templateMatch - ¶àÄ£°åÆ¥Åä²éÕÒÄ¿±ê¶ÔÏó
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ùÓÚ¶à¸öÄ£°åͼƬÔÚÖ¸¶¨Í¼ÏñÖÐÆ¥ÅäÄ¿±ê£¬¿ÉÉèÖÃÆ¥ÅäÇøÓò¡¢ãÐÖµµÈ
- ·½·¨Ç©Ãû Detect[] opencv.templateMatch (Mat mat, String[] templates, Double threshold, Double[] roi, Boolean best)
- ·µ»ØÖµ Detect[]£¨Æ¥Åäµ½µÄÄ¿±êÊý×飩
- ²ÎÊý - Mat mat£º´ýÆ¥ÅäµÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- - String[] templates£ºÄ£°åͼƬ·¾¶Êý×é
- - Double threshold£ºÆ¥ÅäãÐÖµ£¨0-1£¬ÖµÔ½¸ßÆ¥ÅäÔ½Ñϸñ£©
- - Double[] roi£ºÆ¥ÅäÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ [0,0,1,1]
- - Boolean best£ºÊÇ·ñÖ»·µ»Ø×îÓÅÆ¥Åä½á¹û£¨trueÔòÖ»·µ»Ø×î¼ÑÆ¥Å䣬false·µ»ØËùÓзûºÏãÐÖµµÄ½á¹û£©
- */
- // ʾÀý£º¶àÄ£°åÆ¥ÅäÖ¸¶¨ÇøÓò
- function templateMatchExample() {
- printl("=== templateMatch ·½·¨Ê¾Àý ===");
- try {
- // ½ØÍ¼»ñȡͼÏñ
- const screenshot = screen.screenShotFull();
- const mat = screenshot.getMat();
-
- // ¶¨ÒåÄ£°åͼƬ·¾¶Êý×飨Çë¸ù¾Ýʵ¼ÊÇé¿öÐ޸ķ¾¶£©
- const templates = ["./template1.png", "./template2.png"];
-
- // ÔÚÖ¸¶¨ÇøÓò½øÐÐÄ£°åÆ¥Åä
- const matchResults = opencv.templateMatch(mat, templates, 0.8, [0.2, 0.2, 0.6, 0.6], true);
- printl("Ä£°åÆ¥Åä½á¹û£º", matchResults);
-
- if (matchResults && matchResults.length > 0) {
- printl("ÕÒµ½ " + matchResults.length + " ¸öÆ¥ÅäÄ¿±ê");
- for (let i = 0; i < matchResults.length; i++) {
- let result = matchResults[i];
- printl(" Ä¿±ê" + (i+1) + ": ÏàËÆ¶È=" + result.score() + ", λÖÃ=" + result.getRect().toString());
- }
- } else {
- printl("δÕÒµ½Æ¥ÅäÄ¿±ê");
- }
-
- // ÊÍ·Å×ÊÔ´
- mat.close();
- screenshot.close();
- } catch (error) {
- printl("templateMatchÖ´Ðгö´í: " + error.message);
- }
- }
- // µ÷ÓÃʾÀý
- // templateMatchExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý
- // µÚËĸö·½·¨£º📌findImages - ¶àͼ²éÕÒ£¨Ö§³Ö³¬Ê±ºÍÖÊÁ¿ÉèÖã©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ Í¬Ê±²éÕÒ¶àÕÅÏàËÆÍ¼Æ¬£¬³¬Ê±Î´ÕÒµ½Ôò·µ»Ønull£»¿ÉÉèÖýØÍ¼ÖÊÁ¿¡¢³¬Ê±Ê±¼äµÈ
- ·½·¨Ç©Ãû Detect[]|null opencv.findImages (String[] images, Double threshold, Int32 timeOut, Int32 quality, Double[] rects)
- ·µ»ØÖµ Detect[]|null£¨Æ¥Åä³É¹¦·µ»ØÄ¿±êÊý×飬ʧ°Ü·µ»Ønull£©
- ²ÎÊý - String[] images£º´ý²éÕÒµÄͼƬ·¾¶Êý×é
- - Double threshold£ºÏàËÆ¶ÈãÐÖµ£¨0-1£©
- - Int32 timeOut£º³¬Ê±Ê±¼ä£¨ºÁÃ룬³¬¹ý¸Ãʱ¼äδÕÒµ½Ôò·µ»Ønull£©
- - Int32 quality£ºÆÁÄ»½ØÍ¼ÖÊÁ¿£¨0£º±êÇ壬1£º¸ßÇ壬2£º³¬Ç壩
- - Double[] rects£º²éÕÒÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]£¬Ä¬ÈÏȫͼ
- */
- // ʾÀý£º¶àͼ²éÕÒ²¢ÉèÖó¬Ê±
- function findImagesExample() {
- printl("=== findImages ·½·¨Ê¾Àý ===");
- try {
- // ¶¨ÒåÒª²éÕÒµÄͼƬ·¾¶Êý×飨Çë¸ù¾Ýʵ¼ÊÇé¿öÐ޸ķ¾¶£©
- const targetImages = ["ͼɫ961575.cv"];
-
- // ²éÕÒͼƬ£¬ÉèÖÃãÐÖµ0.7£¬³¬Ê±Ê±¼ä3000ms£¬¸ßÇåÖÊÁ¿£¬È«Í¼²éÕÒ
- const multiFindResults = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
-
- if (multiFindResults) {
- printl("¶àͼ²éÕҳɹ¦£¬½á¹û£º", multiFindResults);
- printl("ÕÒµ½ " + multiFindResults.length + " ¸öÆ¥ÅäÄ¿±ê");
- for (let i = 0; i < multiFindResults.length; i++) {
- let result = multiFindResults[i];
- printl(" Ä¿±ê" + (i+1) + ": ÏàËÆ¶È=" + result.score() + ", λÖÃ=" + result.getRect().toString());
- }
- } else {
- printl("¶àͼ²éÕÒ³¬Ê±»òʧ°Ü");
- }
- } catch (error) {
- printl("findImagesÖ´Ðгö´í: " + error.message); // ÐÞ¸´£ºÊ¹ÓÃprintl¶ø²»ÊÇprint.err
- }
- }
- // µ÷ÓÃʾÀý
- findImagesExample();
- // µÚÎå¸ö·½·¨£º📌toGray - ͼÏñת»Ò¶Èͼ
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ½«ÊäÈëµÄMatͼÏñת»»Îª»Ò¶Èͼ£¨Ö±½ÓÐÞ¸ÄÔʼMat¶ÔÏó£©
- ·½·¨Ç©Ãû void opencv.toGray (Mat src)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat src£º´ýת»»µÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- */
- // ʾÀý£º½«Í¼ÏñתΪ»Ò¶Èͼ
- function toGrayExample() {
- printl("=== toGray ·½·¨Ê¾Àý ===");
- try {
- // ½ØÍ¼»ñȡͼÏñ
- const grayImage = screen.screenShotFull();
- const grayMat = grayImage.getMat();
-
- // ת»»Îª»Ò¶Èͼ
- opencv.toGray(grayMat);
- printl("ͼÏñÒÑתΪ»Ò¶Èͼ");
-
- // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
- // grayImage.save("/sdcard/gray_image.png");
-
- // ÊÍ·Å×ÊÔ´
- grayMat.close();
- grayImage.close();
- } catch (error) {
- printl("toGrayÖ´Ðгö´í: " + error.message);
- }
- }
- // µ÷ÓÃʾÀý
- // toGrayExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý
- // µÚÁù¸ö·½·¨£º📌extractRegion - ͼÏñ²ÃÇУ¨´Ó´óͼÖнØÍ¼²ÃÇУ©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ °´°Ù·Ö±ÈÇøÓò²ÃÇÐͼÏñ£¬¿ÉÑ¡Ôñ½ö±£Áô²ÃÇв¿·Ö»ò±£ÁôÔͼ´óС£¨ÆäËûÇøÓò±ä°×£©
- ·½·¨Ç©Ãû void opencv.extractRegion (Mat sourceImage, Double[] roiPercent, Boolean iscut)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat sourceImage£º´ý²ÃÇеÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- - Double[] roiPercent£º²ÃÇÐÇøÓò°Ù·Ö±ÈÊý×飬¸ñʽΪ [x, y, width, height]
- - Boolean iscut£º²ÃÇÐģʽ£¨true½ö±£Áô²ÃÇÐÇøÓò£»false±£ÁôÔͼ´óС£¬ÆäËûÇøÓò±ä°×£©
- */
- // ʾÀý£º²ÃÇÐͼÏñÖмä50%ÇøÓò²¢½ö±£Áô²ÃÇв¿·Ö
- function extractRegionExample() {
- printl("=== extractRegion ·½·¨Ê¾Àý ===");
- try {
- // ½ØÍ¼»ñȡͼÏñ
- const extractImage = screen.screenShotFull();
- const extractMat = extractImage.getMat();
-
- // ²ÃÇÐͼÏñÖмä50%ÇøÓò²¢½ö±£Áô²ÃÇв¿·Ö
- opencv.extractRegion(extractMat, [0.25, 0.25, 0.5, 0.5], true);
- printl("ͼÏñÒѲÃÇÐ");
-
- // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
- // extractImage.save("/sdcard/cropped_image.png");
-
- // ÊÍ·Å×ÊÔ´
- extractMat.close();
- extractImage.close();
- } catch (error) {
- printl("extractRegionÖ´Ðгö´í: " + error.message);
- }
- }
- // µ÷ÓÃʾÀý
- // extractRegionExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý
- // µÚÆß¸ö·½·¨£º📌threshold - ͼÏñ¶þÖµ»¯´¦Àí
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ½«Í¼Ïñת»»ÎªºÚ°×¶þֵͼ£¨ÏñËØÖµÔÚ[min, max]Çø¼äÍâΪºÚÉ«£¬Çø¼äÄÚΪ°×É«£©
- ·½·¨Ç©Ãû void opencv.threshold (Mat src, Int32 min, Int32 max)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat src£º´ý¶þÖµ»¯µÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- - Int32 min£º¶þÖµ»¯×îСãÐÖµ£¨0-255£©
- - Int32 max£º¶þÖµ»¯×î´óãÐÖµ£¨0-255£©
- */
- // ʾÀý£º½ØÆÁ²¢½øÐжþÖµ»¯´¦Àí£¨º¬ºóÐøÁ÷³Ì£©
- function thresholdExample() {
- printl("=== threshold ·½·¨Ê¾Àý ===");
- try {
- // ½ØÍ¼»ñȡͼÏñ
- const binImg = screen.screenShotFull();
- const binMat = binImg.getMat();
-
- // ½øÐжþÖµ»¯´¦Àí£¬ãÐÖµÇø¼ä50-200
- opencv.threshold(binMat, 50, 200);
- printl("ͼÏñÒѶþÖµ»¯´¦Àí");
-
- // תImage²¢OCRʶ±ð
- const binImg2 = new Image();
- binImg2.readMat(binMat);
- var ocr2 = binImg2.ocr(0, 0, 1, 1);
- if(ocr2!=null){
- printl(ocr2.getAllString());
- } else {
- printl("¶þÖµ»¯ºóOCRʶ±ðʧ°Ü");
- }
-
- // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
- // binImg.save("/sdcard/binary_image.png");
-
- // ÊÍ·ÅÄÚ´æ
- binMat.close();
- binImg.close();
- binImg2.close();
- } catch (error) {
- printl("thresholdÖ´Ðгö´í: " + error.message);
- }
- }
- // µ÷ÓÃʾÀý
- // thresholdExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý
- // µÚ°Ë¸ö·½·¨£º📌invertColor - ͼÏñÑÕÉ«·×ª£¨·´É«´¦Àí£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ¶ÔͼÏñ½øÐÐÑÕÉ«·×ª£¬½«Ã¿¸öÏñËØµÄRGBÖµ·´×ª£¨Èç°×É«¡úºÚÉ«¡¢ºìÉ«¡úÇàÉ«µÈ£©
- ·½·¨Ç©Ãû void opencv.invertColor (Mat src)
- ·µ»ØÖµ void£¨ÎÞ·µ»ØÖµ£¬Ö±½ÓÐÞ¸ÄÊäÈëµÄMat¶ÔÏó£©
- ²ÎÊý - Mat src£º´ýÑÕÉ«·×ªµÄÔʼͼÏñ£¨Mat¶ÔÏó£©
- */
- // ʾÀý£º·×ªÍ¼ÏñÑÕÉ«
- function invertColorExample() {
- printl("=== invertColor ·½·¨Ê¾Àý ===");
- try {
- // ½ØÍ¼»ñȡͼÏñ
- const invertImage = screen.screenShotFull();
- const invertMat = invertImage.getMat();
-
- // ·×ªÍ¼ÏñÑÕÉ«
- opencv.invertColor(invertMat);
- printl("ÑÕÉ«ÒѷתµÄͼÏñ");
-
- // ±£´æ´¦ÀíºóµÄͼÏñ£¨¿ÉÑ¡£©
- // invertImage.save("/sdcard/inverted_image.png");
-
- // ÊÍ·Å×ÊÔ´
- invertMat.close();
- invertImage.close();
- } catch (error) {
- printl("invertColorÖ´Ðгö´í: " + error.message);
- }
- }
- // µ÷ÓÃʾÀý
- // invertColorExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý
- // ========================== ʵ¼Ê¿ÉÓõÄÍêÕûʾÀý ==========================
- /**
- * ʵ¼Ê¿ÉÓõÄOpenCVͼÏñ´¦ÀíʾÀý
- * ÑÝʾÍêÕûµÄͼÏñ´¦ÀíÁ÷³Ì
- */
- async function practicalOpenCVExample() {
- printl("=== OpenCVÍêÕû´¦ÀíÁ÷³ÌʾÀý ===");
-
- try {
- // 1. È«ÆÁ½ØÍ¼
- printl("1. Ö´ÐÐÈ«ÆÁ½ØÍ¼");
- const screenshot = screen.screenShotFull();
- const mat = screenshot.getMat();
- printl(" ½ØÍ¼Íê³É£¬Í¼Ïñ³ß´ç: " + mat.width + "x" + mat.height);
-
- // 2. ͼÏñÔ¤´¦Àí - תΪ»Ò¶Èͼ
- printl("2. ͼÏñתΪ»Ò¶Èͼ");
- opencv.toGray(mat);
-
- // 3. ʹÓÃcvÎļþ²éÕÒͼÏñ
- printl("3. ʹÓÃcvÎļþ²éÕÒͼÏñ");
- const findResults = opencv.findImagesEx("ͼɫ961575.cv");
- if (findResults && findResults.length > 0) {
- printl(" ÕÒµ½ " + findResults.length + " ¸öÆ¥ÅäÄ¿±ê");
- const firstResult = findResults[0];
- printl(" µÚÒ»¸öÆ¥ÅäÄ¿±êÏàËÆ¶È: " + firstResult.score());
- printl(" λÖÃÐÅÏ¢: " + firstResult.getRect().toString());
- } else {
- printl(" δÕÒµ½Æ¥ÅäÄ¿±ê");
- }
-
- // 4. ʹÓÃcvÎļþ½øÐÐOCRʶ±ð
- printl("4. ʹÓÃcvÎļþ½øÐÐOCRʶ±ð");
- var ocrResult=opencv.OCREx('ͼɫ995593.cv');
- if(ocrResult!=null){
- printl(ocrResult.getAllString());
- } else {
- printl("OCRʶ±ðʧ°Ü»òδʶ±ðµ½ÎÄ×Ö");
- }
-
- // 5. ͼÏñ¶þÖµ»¯´¦Àí
- printl("5. ͼÏñ¶þÖµ»¯´¦Àí");
- opencv.threshold(mat, 100, 200);
- printl(" ¶þÖµ»¯´¦ÀíÍê³É");
-
- // 6. ÑÕÉ«·×ª
- printl("6. ͼÏñÑÕÉ«·×ª");
- opencv.invertColor(mat);
- printl(" ÑÕÉ«·×ªÍê³É");
-
- // 7. ²ÃÇÐͼÏñ
- printl("7. ²ÃÇÐͼÏñÖмäÇøÓò");
- opencv.extractRegion(mat, [0.25, 0.25, 0.5, 0.5], true);
- printl(" ͼÏñ²ÃÇÐÍê³É");
-
- // ÊÍ·Å×ÊÔ´
- mat.close();
- screenshot.close();
- printl("8. ×ÊÔ´ÊÍ·ÅÍê³É");
-
- } catch (error) {
- printl("Ö´Ðйý³ÌÖз¢Éú´íÎó: " + error.message);
- }
-
- printl("=== OpenCVͼÏñ´¦ÀíʾÀý½áÊø ===");
- }
- // ÔËÐÐʵ¼ÊʾÀý
- practicalOpenCVExample(); // È¡Ïû×¢ÊÍÒÔÔËÐÐʾÀý
- // ... existing code ...
¸´ÖÆ´úÂë
|
|