{"id":111199,"date":"2025-05-30T08:20:12","date_gmt":"2025-05-30T03:50:12","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/"},"modified":"2025-05-30T08:20:12","modified_gmt":"2025-05-30T03:50:12","slug":"04-harmonyos5-facedetector-case-5ekf","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/","title":{"rendered":"04-harmonyos5-faceettector"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#%D8%B4%D8%B1%D8%AD_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87\" >\u0634\u0631\u062d \u067e\u0631\u0648\u0646\u062f\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C\" >\u0645\u0631\u0627\u062d\u0644 \u0627\u062c\u0631\u0627\u06cc:<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#1_%D9%88%D8%A7%D8%B1%D8%AF%D8%A7%D8%AA_%D9%85%D8%A7%DA%98%D9%88%D9%84\" >1. \u0648\u0627\u0631\u062f\u0627\u062a \u0645\u0627\u0698\u0648\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#2_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF_%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%D8%A2%D9%84%D8%A8%D9%88%D9%85_%D8%B9%DA%A9%D8%B3\" >2. \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u0622\u0644\u0628\u0648\u0645 \u0639\u06a9\u0633<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#3_%D8%AC%D8%B1%DB%8C%D8%A7%D9%86_%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1\" >3. \u062c\u0631\u06cc\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#4_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B5%D9%84%DB%8C_%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5_%DA%86%D9%87%D8%B1%D9%87\" >4. \u0627\u062c\u0631\u0627\u06cc \u0627\u0635\u0644\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#5_%D9%86%D9%85%D8%A7%DB%8C%D8%B4_%D9%86%D8%AA%D8%A7%DB%8C%D8%AC_%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5\" >5. \u0646\u0645\u0627\u06cc\u0634 \u0646\u062a\u0627\u06cc\u062c \u062a\u0634\u062e\u06cc\u0635<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#%DA%A9%D8%AF_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C\" >\u06a9\u062f \u0627\u062c\u0631\u0627\u06cc:<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#1_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%D9%85%D8%A4%D9%84%D9%81%D9%87_UI\" >1. \u062a\u0639\u0631\u06cc\u0641 \u0645\u0624\u0644\u0641\u0647 UI<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#2_%D8%B1%D9%88%D8%B4_%D8%A7%D8%B5%D9%84%DB%8C_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF\" >2 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#3_%D8%B3%D8%A7%D8%AE%D8%AA_%D9%88_%D8%B3%D8%A7%D8%B2_%D8%B1%D8%A7%D8%A8%D8%B7\" >3. \u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632 \u0631\u0627\u0628\u0637<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#%D8%AE%D9%84%D8%A7%D8%B5%D9%87\" >\u062e\u0644\u0627\u0635\u0647:<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#%D9%86%DA%A9%D8%A7%D8%AA_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C\" >\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/04-harmonyos5-facedetector-case-5ekf\/#%D8%B1%D9%85%D8%B2_%DA%A9%D8%A7%D9%85%D9%84\" >\u0631\u0645\u0632 \u06a9\u0627\u0645\u0644<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B4%D8%B1%D8%AD_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87\"><\/span>\n<p>  \u0634\u0631\u062d \u067e\u0631\u0648\u0646\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062e\u062f\u0645\u0627\u062a \u0627\u0635\u0644\u06cc Vision Ai \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a. \u067e\u0633 \u0627\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 \u0622\u0644\u0628\u0648\u0645 \u0639\u06a9\u0633 \u062f\u0633\u062a\u06af\u0627\u0647 \u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0686\u0647\u0631\u0647 \u0631\u0627 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0646\u062a\u0627\u06cc\u062c \u062a\u0634\u062e\u06cc\u0635 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C\"><\/span>\n<p>  \u0645\u0631\u0627\u062d\u0644 \u0627\u062c\u0631\u0627\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_%D9%88%D8%A7%D8%B1%D8%AF%D8%A7%D8%AA_%D9%85%D8%A7%DA%98%D9%88%D9%84\"><\/span>\n<p>  1. \u0648\u0627\u0631\u062f\u0627\u062a \u0645\u0627\u0698\u0648\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Import functional modules<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">photoAccessHelper<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.MediaLibraryKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">fileIo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.CoreFileKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">image<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.ImageKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">faceDetector<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.CoreVisionKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">promptAction<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.ArkUI<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">JSON<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.ArkTS<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF_%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%D8%A2%D9%84%D8%A8%D9%88%D9%85_%D8%B9%DA%A9%D8%B3\"><\/span>\n<p>  2. \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u0622\u0644\u0628\u0648\u0645 \u0639\u06a9\u0633<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Create a photo album picker instance<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">photoPicker<\/span><span class=\"p\">:<\/span> <span class=\"nx\">photoAccessHelper<\/span><span class=\"p\">.<\/span><span class=\"nx\">PhotoViewPicker<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">photoAccessHelper<\/span><span class=\"p\">.<\/span><span class=\"nc\">PhotoViewPicker<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/ Set selection parameters<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">photoResult<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">photoPicker<\/span><span class=\"p\">.<\/span><span class=\"nf\">select<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">MIMEType<\/span><span class=\"p\">:<\/span> <span class=\"nx\">photoAccessHelper<\/span><span class=\"p\">.<\/span><span class=\"nx\">PhotoViewMIMETypes<\/span><span class=\"p\">.<\/span><span class=\"nx\">IMAGE_TYPE<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">maxSelectNumber<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span>\n<span class=\"p\">})<\/span>\n<span class=\"c1\">\/\/ Get the URI of the selected image<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">photoUri<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">photoResult<\/span><span class=\"p\">.<\/span><span class=\"nx\">photoUris<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%AC%D8%B1%DB%8C%D8%A7%D9%86_%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1\"><\/span>\n<p>  3. \u062c\u0631\u06cc\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Open the image file handle<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">fileSource<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">fileIo<\/span><span class=\"p\">.<\/span><span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"nx\">photoUri<\/span><span class=\"p\">,<\/span> <span class=\"nx\">fileIo<\/span><span class=\"p\">.<\/span><span class=\"nx\">OpenMode<\/span><span class=\"p\">.<\/span><span class=\"nx\">READ_ONLY<\/span><span class=\"p\">);<\/span>\n<span class=\"c1\">\/\/ Create an image data source<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">imageSource<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">image<\/span><span class=\"p\">.<\/span><span class=\"nf\">createImageSource<\/span><span class=\"p\">(<\/span><span class=\"nx\">fileSource<\/span><span class=\"p\">.<\/span><span class=\"nx\">fd<\/span><span class=\"p\">);<\/span>\n<span class=\"c1\">\/\/ Generate pixel map format data<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">chooseImage<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">imageSource<\/span><span class=\"p\">.<\/span><span class=\"nf\">createPixelMap<\/span><span class=\"p\">();<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"4_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%A7%D8%B5%D9%84%DB%8C_%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5_%DA%86%D9%87%D8%B1%D9%87\"><\/span>\n<p>  4. \u0627\u062c\u0631\u0627\u06cc \u0627\u0635\u0644\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Initialize the face detector<\/span>\n<span class=\"nx\">faceDetector<\/span><span class=\"p\">.<\/span><span class=\"nf\">init<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/ Configure visual recognition parameters<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">visionInfo<\/span><span class=\"p\">:<\/span> <span class=\"nx\">faceDetector<\/span><span class=\"p\">.<\/span><span class=\"nx\">VisionInfo<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">pixelMap<\/span><span class=\"p\">:<\/span> <span class=\"nx\">chooseImage<\/span>\n<span class=\"p\">};<\/span>\n<span class=\"c1\">\/\/ Execute face detection<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">visionResult<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">faceDetector<\/span><span class=\"p\">.<\/span><span class=\"nf\">detect<\/span><span class=\"p\">(<\/span><span class=\"nx\">visionInfo<\/span><span class=\"p\">)<\/span>\n<span class=\"c1\">\/\/ Check if the image contains faces<\/span>\n<span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">isFace<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">visionResult<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"5_%D9%86%D9%85%D8%A7%DB%8C%D8%B4_%D9%86%D8%AA%D8%A7%DB%8C%D8%AC_%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5\"><\/span>\n<p>  5. \u0646\u0645\u0627\u06cc\u0634 \u0646\u062a\u0627\u06cc\u062c \u062a\u0634\u062e\u06cc\u0635<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Show the structured detection results in a pop-up window<\/span>\n<span class=\"nx\">promptAction<\/span><span class=\"p\">.<\/span><span class=\"nf\">showDialog<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">visionResult<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">})<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%A9%D8%AF_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C\"><\/span>\n<p>  \u06a9\u062f \u0627\u062c\u0631\u0627\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%D9%85%D8%A4%D9%84%D9%81%D9%87_UI\"><\/span>\n<p>  1. \u062a\u0639\u0631\u06cc\u0641 \u0645\u0624\u0644\u0641\u0647 UI<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"p\">@<\/span><span class=\"nd\">Entry<\/span>\n<span class=\"p\">@<\/span><span class=\"nd\">ComponentV2<\/span>\n<span class=\"nx\">struct<\/span> <span class=\"nx\">FaceDetector<\/span> <span class=\"p\">{<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Local<\/span> <span class=\"nx\">isFace<\/span><span class=\"p\">:<\/span> <span class=\"nx\">boolean<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%B1%D9%88%D8%B4_%D8%A7%D8%B5%D9%84%DB%8C_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF\"><\/span>\n<p>  2 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">async<\/span> <span class=\"nf\">checkFace<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Integrate the complete logic of photo album selection, image processing, and face detection<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%B3%D8%A7%D8%AE%D8%AA_%D9%88_%D8%B3%D8%A7%D8%B2_%D8%B1%D8%A7%D8%A8%D8%B7\"><\/span>\n<p>  3. \u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632 \u0631\u0627\u0628\u0637<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"nf\">build<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nc\">Column<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nc\">Button<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Select from Album and Perform Face Recognition<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n      <span class=\"p\">.<\/span><span class=\"nf\">onClick<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nf\">checkFace<\/span><span class=\"p\">()<\/span>\n      <span class=\"p\">})<\/span>\n  <span class=\"p\">}<\/span>\n  <span class=\"p\">.<\/span><span class=\"nf\">height<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">100%<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">.<\/span><span class=\"nf\">width<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">100%<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AE%D9%84%D8%A7%D8%B5%D9%87\"><\/span>\n<p>  \u062e\u0644\u0627\u0635\u0647:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%DA%A9%D8%A7%D8%AA_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C\"><\/span>\n<p>  \u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0622\u0644\u0628\u0648\u0645 \u0639\u06a9\u0633 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u062c\u0648\u0632 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u0631\u062f.<\/li>\n<li>\u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0647\u0645\u06a9\u0627\u0631\u06cc MedialibraryKit \u0648 ImageKit \u062a\u06a9\u0645\u06cc\u0644 \u0634\u0648\u062f.<\/li>\n<li>\u0646\u062a\u0627\u06cc\u062c \u062a\u0634\u062e\u06cc\u0635 \u0634\u0627\u0645\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0642\u0639\u06cc\u062a \u0647\u0627\u06cc \u0686\u0647\u0631\u0647 \u0648 \u0646\u0642\u0627\u0637 \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D9%85%D8%B2_%DA%A9%D8%A7%D9%85%D9%84\"><\/span>\n<p>  \u0631\u0645\u0632 \u06a9\u0627\u0645\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">photoAccessHelper<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.MediaLibraryKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">fileIo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.CoreFileKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">image<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.ImageKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">faceDetector<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.CoreVisionKit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">promptAction<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.ArkUI<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">JSON<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@kit.ArkTS<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"p\">@<\/span><span class=\"nd\">Entry<\/span>\n<span class=\"p\">@<\/span><span class=\"nd\">ComponentV2<\/span>\n<span class=\"nx\">struct<\/span> <span class=\"nx\">FaceDetector<\/span> <span class=\"p\">{<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Local<\/span> <span class=\"nx\">isFace<\/span><span class=\"p\">:<\/span> <span class=\"nx\">boolean<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span>\n\n  <span class=\"k\">async<\/span> <span class=\"nf\">checkFace<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">photoPicker<\/span><span class=\"p\">:<\/span> <span class=\"nx\">photoAccessHelper<\/span><span class=\"p\">.<\/span><span class=\"nx\">PhotoViewPicker<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">photoAccessHelper<\/span><span class=\"p\">.<\/span><span class=\"nc\">PhotoViewPicker<\/span><span class=\"p\">();<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">photoResult<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">photoPicker<\/span><span class=\"p\">.<\/span><span class=\"nf\">select<\/span><span class=\"p\">({<\/span>\n      <span class=\"na\">MIMEType<\/span><span class=\"p\">:<\/span> <span class=\"nx\">photoAccessHelper<\/span><span class=\"p\">.<\/span><span class=\"nx\">PhotoViewMIMETypes<\/span><span class=\"p\">.<\/span><span class=\"nx\">IMAGE_TYPE<\/span><span class=\"p\">,<\/span>\n      <span class=\"na\">maxSelectNumber<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span>\n    <span class=\"p\">})<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">photoUri<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">photoResult<\/span><span class=\"p\">.<\/span><span class=\"nx\">photoUris<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">fileSource<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">fileIo<\/span><span class=\"p\">.<\/span><span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"nx\">photoUri<\/span><span class=\"p\">,<\/span> <span class=\"nx\">fileIo<\/span><span class=\"p\">.<\/span><span class=\"nx\">OpenMode<\/span><span class=\"p\">.<\/span><span class=\"nx\">READ_ONLY<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">imageSource<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">image<\/span><span class=\"p\">.<\/span><span class=\"nf\">createImageSource<\/span><span class=\"p\">(<\/span><span class=\"nx\">fileSource<\/span><span class=\"p\">.<\/span><span class=\"nx\">fd<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">chooseImage<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">imageSource<\/span><span class=\"p\">.<\/span><span class=\"nf\">createPixelMap<\/span><span class=\"p\">();<\/span>\n\n    <span class=\"nx\">faceDetector<\/span><span class=\"p\">.<\/span><span class=\"nf\">init<\/span><span class=\"p\">();<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">visionInfo<\/span><span class=\"p\">:<\/span> <span class=\"nx\">faceDetector<\/span><span class=\"p\">.<\/span><span class=\"nx\">VisionInfo<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">pixelMap<\/span><span class=\"p\">:<\/span> <span class=\"nx\">chooseImage<\/span>\n    <span class=\"p\">};<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">visionResult<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">faceDetector<\/span><span class=\"p\">.<\/span><span class=\"nf\">detect<\/span><span class=\"p\">(<\/span><span class=\"nx\">visionInfo<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">isFace<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">visionResult<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span>\n\n    <span class=\"nx\">promptAction<\/span><span class=\"p\">.<\/span><span class=\"nf\">showDialog<\/span><span class=\"p\">({<\/span>\n      <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">visionResult<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">build<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nc\">Column<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nc\">Button<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Select from Album and Perform Face Recognition<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">.<\/span><span class=\"nf\">onClick<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n          <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nf\">checkFace<\/span><span class=\"p\">()<\/span>\n        <span class=\"p\">})<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">height<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">100%<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">width<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">100%<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0634\u0631\u062d \u067e\u0631\u0648\u0646\u062f\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062e\u062f\u0645\u0627\u062a \u0627\u0635\u0644\u06cc Vision Ai \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a. \u067e\u0633 \u0627\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 \u0622\u0644\u0628\u0648\u0645 \u0639\u06a9\u0633 \u062f\u0633\u062a\u06af\u0627\u0647 \u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0686\u0647\u0631\u0647 \u0631\u0627 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0646\u062a\u0627\u06cc\u062c \u062a\u0634\u062e\u06cc\u0635 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. \u0645\u0631\u0627\u062d\u0644 \u0627\u062c\u0631\u0627\u06cc: 1. \u0648\u0627\u0631\u062f\u0627\u062a \u0645\u0627\u0698\u0648\u0644 \/\/ Import functional modules import { photoAccessHelper &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-111199","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/111199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=111199"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/111199\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=111199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=111199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=111199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}