{"id":97597,"date":"2025-02-15T13:42:27","date_gmt":"2025-02-15T10:12:27","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/"},"modified":"2025-02-15T13:42:27","modified_gmt":"2025-02-15T10:12:27","slug":"attendance-system-with-face-mask-detection-using-azure-face-api-2glb","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/","title":{"rendered":"\u0633\u06cc\u0633\u062a\u0645 \u062d\u0636\u0648\u0631 \u0648 \u063a\u06cc\u0627\u0628 \u0628\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u0627\u0633\u06a9 \u0635\u0648\u0631\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API Azure Face"},"content":{"rendered":"<div data-article-id=\"2280470\" id=\"article-body\">\n<p>\u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u067e\u0633 \u0627\u0632 \u0641\u0647\u0631\u0633\u062a \u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062a\u0623\u06cc\u06cc\u062f \u0647\u0648\u06cc\u062a \u0628\u0631\u0627\u06cc \u062d\u0636\u0648\u0631 \u060c \u0628\u0647 \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u06cc\u0627 \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062e\u0648\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u06a9\u0647 \u0645\u0627\u0633\u06a9 \u0628\u067e\u0648\u0634\u0646\u062f. \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0633\u0627\u062f\u0647 \u0631\u0627 \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f <strong>\u0633\u06cc\u0633\u062a\u0645 \u062d\u0636\u0648\u0631 \u062f\u0631 \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647<\/strong> \u0628\u0627 <strong>\u062a\u0634\u062e\u06cc\u0635 \u0645\u0627\u0633\u06a9 \u0635\u0648\u0631\u062a<\/strong> \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong>Azure ai face api<\/strong>\u0628\u0634\u0631<\/p>\n<p>\u0628\u0627 \u0686\u0647\u0631\u0647 Azure AI \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645:<\/p>\n<ol>\n<li>\n<strong>\u0686\u0647\u0631\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u062f<\/strong> \u062f\u0631 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631<\/li>\n<li>\n<strong>\u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0634\u062e\u0635\u06cc \u0645\u0627\u0633\u06a9 \u067e\u0648\u0634\u06cc\u062f\u0647 \u0627\u0633\u062a<\/strong> (\u0648 \u0627\u06af\u0631 \u0628\u06cc\u0646\u06cc \u0648 \u062f\u0647\u0627\u0646 \u067e\u0648\u0634\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a).<\/li>\n<li>\n<strong>\u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0631\u062f\u0646<\/strong> \u0627\u06af\u0631 \u0686\u0647\u0631\u0647 \u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0634\u062f\u0647 \u062f\u0631 \u0644\u06cc\u0633\u062a \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0645\u0627 \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u0645\u062c\u0627\u0632 \u0642\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/li>\n<li>\u062d\u0636\u0648\u0631 \u0631\u0627 \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0634\u0646\u0627\u062e\u062a\u0646 \u0634\u062e\u0635 \u0639\u0644\u0627\u0645\u062a \u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f <strong><em>\u0648\u062a<\/em><\/strong>  \u067e\u0648\u0634\u06cc\u062f\u0646 \u0645\u0627\u0633\u06a9<\/li>\n<\/ol>\n<p>\u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u0634\u0627\u0645\u0644 \u062f\u0648 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0627\u0635\u0644\u06cc \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\n<strong>\u0634\u0646\u0627\u062e\u062a \u0635\u0648\u0631\u062a<\/strong> \u0648 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0622\u0645\u0648\u0632\u0634 \u062f\u06cc\u062f\u0647 \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u0645\u062c\u0627\u0632 \u0627\u0633\u062a.<\/li>\n<li>\n<strong>\u062a\u0634\u062e\u06cc\u0635 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0634\u062e\u0635\u06cc \u0645\u0627\u0633\u06a9 \u067e\u0648\u0634\u06cc\u062f\u0647 \u0627\u0633\u062a<\/strong> \u0648 \u0645\u0627\u0631\u06a9 \u062d\u0636\u0648\u0631<\/li>\n<\/ol>\n<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=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><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\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7%DB%8C\" >\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc<\/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\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C_%D8%A8%D8%A7_%DB%8C%DA%A9_%D9%86%DA%AF%D8%A7%D9%87\" >\u0645\u0639\u0645\u0627\u0631\u06cc \u0628\u0627 \u06cc\u06a9 \u0646\u06af\u0627\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%D9%82%D8%B7%D8%B9%D9%87_%DA%A9%D8%AF_%D8%B4%D9%85%D8%A7%D8%B1%D9%87_1_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D8%AF%D8%B1%D8%A8_%D8%A8%D8%A7_%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5_%DA%86%D9%87%D8%B1%D9%87\" >\u0642\u0637\u0639\u0647 \u06a9\u062f \u0634\u0645\u0627\u0631\u0647 1: \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0631\u0628 \u0628\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\" >\u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5_%D9%88%D8%A8_%DA%A9%D9%85_%D8%AF%D8%B1_%D8%B2%D9%85%D8%A7%D9%86_%D9%88%D8%A7%D9%82%D8%B9%DB%8C\" >\u062a\u0634\u062e\u06cc\u0635 \u0648\u0628 \u06a9\u0645 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF-2\" >\u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%D8%A7%D8%AF%D8%BA%D8%A7%D9%85_%D8%A8%D8%A7_%DB%8C%DA%A9_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D8%AD%D8%B6%D9%88%D8%B1\" >\u0627\u062f\u063a\u0627\u0645 \u0628\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062d\u0636\u0648\u0631<\/a><\/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\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%D8%B9%DB%8C%D8%A8_%DB%8C%D8%A7%D8%A8%DB%8C_%D9%88_%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4%D9%87%D8%A7\" >\u0639\u06cc\u0628 \u06cc\u0627\u0628\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627<\/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\/attendance-system-with-face-mask-detection-using-azure-face-api-2glb\/#%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A8%D8%B9%D8%AF%DB%8C\" >\u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc:<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\n<strong>\u0627\u0634\u062a\u0631\u0627\u06a9 \u0644\u0627\u062c\u0648\u0631\u062f<\/strong><\/p>\n<ul>\n<li>\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0634\u062a\u0631\u0627\u06a9 Azure \u0641\u0639\u0627\u0644 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f <strong>\u062e\u062f\u0645\u0627\u062a \u0634\u0646\u0627\u062e\u062a\u06cc \u0644\u0627\u062c\u0648\u0631\u062f<\/strong> \u0645\u0646\u0628\u0639 \u0628\u0627 API \u0635\u0648\u0631\u062a.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<ol>\n<li>\n<strong>\u067e\u0627\u06cc\u062a\u0648\u0646 3.7+<\/strong><\/p>\n<ul>\n<li>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 Python 3.7 (\u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631) \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Azure AI Vision (Face) SDK<\/strong>  <\/p>\n<pre class=\"highlight shell\"><code> pip <span class=\"nb\">install <\/span>azure-ai-vision\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Face API Key &#038; Endpoint<\/strong>  <\/p>\n<ul>\n<li>\u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0635\u0648\u0631\u062a \u062f\u0631 \u067e\u0648\u0631\u062a\u0627\u0644 \u0644\u0627\u062c\u0648\u0631\u062f \u060c \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc:\n<ul>\n<li>\n<strong>\u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc<\/strong> (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c <code>https:\/\/<resource-name>.cognitiveservices.azure.com\/<\/resource-name><\/code>)<\/li>\n<li>\n<strong>\u06a9\u0644\u06cc\u062f API<\/strong> (\u06cc\u06a9 \u06a9\u0644\u06cc\u062f 32 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C_%D8%A8%D8%A7_%DB%8C%DA%A9_%D9%86%DA%AF%D8%A7%D9%87\"><\/span>\n<p>  \u0645\u0639\u0645\u0627\u0631\u06cc \u0628\u0627 \u06cc\u06a9 \u0646\u06af\u0627\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\n<p><strong>\u06af\u0631\u0648\u0647 \u0634\u062e\u0635 \u0628\u0632\u0631\u06af (LPG)<\/strong>:  <\/p>\n<ul>\n<li>\u0634\u0645\u0627 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0628\u0632\u0631\u06af \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0627\u0641\u0631\u0627\u062f \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u060c \u062f\u0627\u0646\u0634\u062c\u0648\u06cc\u0627\u0646).\n<\/li>\n<li>LPG \u0631\u0627 \u0622\u0645\u0648\u0632\u0634 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0639\u062f\u0627\u064b \u0627\u06cc\u0646 \u0686\u0647\u0631\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u062f.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0648 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc<\/strong>:  <\/p>\n<ul>\n<li>\u0648\u0642\u062a\u06cc \u06a9\u0633\u06cc \u0633\u0639\u06cc \u062f\u0631 \u062d\u0636\u0648\u0631 \u062f\u0631 \u062d\u0636\u0648\u0631 \u062f\u0627\u0631\u062f \u060c \u0633\u06cc\u0633\u062a\u0645 \u06cc\u06a9 \u0639\u06a9\u0633 \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.\n<\/li>\n<li>\u0686\u0647\u0631\u0647 \u0644\u0627\u062c\u0648\u0631\u062f \u0686\u0647\u0631\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc \u062f\u0647\u062f \u060c \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0628\u0627\u0632\u062f\u0647 \u0627\u0632 \u062c\u0645\u0644\u0647 <strong>\u0634\u0646\u0627\u0633\u0647 \u0635\u0648\u0631\u062a<\/strong>\u0628\u0627 <strong>\u0645\u0627\u0633\u06a9<\/strong> \u062e\u0648\u0627\u0635 \u060c \u0648 (\u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc) \u06a9\u06cc\u0641\u06cc\u062a \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635.\n<\/li>\n<li>\u0627\u06af\u0631 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0632 \u0622\u0633\u062a\u0627\u0646\u0647 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062e\u0627\u0635 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u0648\u062f <strong>\u0648\u062a<\/strong> \u0628\u0627 \u067e\u0648\u0634\u06cc\u062f\u0646 \u0645\u0627\u0633\u06a9 \u060c \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u062d\u0636\u0648\u0631 \u062f\u0627\u0631\u062f.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u067e\u06cc\u0634\u0631\u0641\u062a \u0647\u0627\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<\/strong>:<\/p>\n<ul>\n<li>\u0628\u0631\u0627\u06cc \u0636\u0628\u0637 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0627\u0632 \u06cc\u06a9 \u0641\u06cc\u062f \u062f\u0648\u0631\u0628\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.\n<\/li>\n<li>\u0628\u0627 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u062d\u0636\u0648\u0631 \u0645\u0648\u062c\u0648\u062f \u06cc\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u062f\u063a\u0627\u0645 \u0634\u0648\u06cc\u062f.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D9%82%D8%B7%D8%B9%D9%87_%DA%A9%D8%AF_%D8%B4%D9%85%D8%A7%D8%B1%D9%87_1_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D8%AF%D8%B1%D8%A8_%D8%A8%D8%A7_%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5_%DA%86%D9%87%D8%B1%D9%87\"><\/span>\n<p>  \u0642\u0637\u0639\u0647 \u06a9\u062f \u0634\u0645\u0627\u0631\u0647 1: \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0631\u0628 \u0628\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u0642\u0637\u0639\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 <strong>\u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0646<\/strong> \u0635\u0648\u0631\u062a \u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0642\u0628\u0644\u0627\u064b \u062f\u0631 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <strong>\u0622\u0645\u0648\u0632\u0634 \u062f\u06cc\u062f\u0647<\/strong> \u06af\u0631\u0648\u0647 \u0628\u0632\u0631\u06af \u0634\u062e\u0635. \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0634\u062e\u06cc\u0635 \u060c \u0628\u0627 \u0686\u0627\u067e \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0648\u0634 \u0622\u0645\u062f\u06cc\u062f \u060c \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062f\u0631\u0628 \u0631\u0627 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u060c \u0645\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0631\u0627 \u0627\u0646\u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<blockquote>\n<p><strong>\u0646\u0627\u0645 \u067e\u0631\u0648\u0646\u062f\u0647:<\/strong> <code>door_access_control_local_upload.py<\/code><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"n\">os<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">azure.core.credentials<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">AzureKeyCredential<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">azure.ai.vision.face<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">FaceAdministrationClient<\/span><span class=\"p\">,<\/span> <span class=\"n\">FaceClient<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">azure.ai.vision.face.models<\/span> <span class=\"kn\">import<\/span> <span class=\"p\">(<\/span>\n    <span class=\"n\">FaceAttributeTypeRecognition04<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">FaceDetectionModel<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">FaceRecognitionModel<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">QualityForRecognition<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"n\">FACE_API_KEY<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">environ<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">FACE_APIKEY<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>  <span class=\"c1\"># Or replace with your API key as a string\n<\/span><span class=\"n\">FACE_ENDPOINT<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">environ<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">FACE_ENDPOINT<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>  <span class=\"c1\"># Or replace with your endpoint\n<\/span>\n<span class=\"c1\"># Must match the ID you used when creating\/training the Large Person Group\n<\/span><span class=\"n\">LARGE_PERSON_GROUP_ID<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">my-lpg-local-upload<\/span><span class=\"sh\">\"<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">check_access<\/span><span class=\"p\">(<\/span><span class=\"n\">face_client<\/span><span class=\"p\">,<\/span> <span class=\"n\">face_id<\/span><span class=\"p\">,<\/span> <span class=\"n\">confidence_threshold<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.7<\/span><span class=\"p\">):<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n    Identify the face_id against the Large Person Group.\n    Return (True, person_id) if recognized &gt;= threshold, else (False, None).\n    <\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"n\">identify_results<\/span> <span class=\"o\">=<\/span> <span class=\"n\">face_client<\/span><span class=\"p\">.<\/span><span class=\"nf\">identify_from_large_person_group<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">face_ids<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"n\">face_id<\/span><span class=\"p\">],<\/span>\n        <span class=\"n\">large_person_group_id<\/span><span class=\"o\">=<\/span><span class=\"n\">LARGE_PERSON_GROUP_ID<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">identify_results<\/span><span class=\"p\">:<\/span>\n        <span class=\"nf\">return <\/span><span class=\"p\">(<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"bp\">None<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"n\">result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">identify_results<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">result<\/span><span class=\"p\">.<\/span><span class=\"n\">candidates<\/span><span class=\"p\">:<\/span>\n        <span class=\"nf\">return <\/span><span class=\"p\">(<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"bp\">None<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"n\">top_candidate<\/span> <span class=\"o\">=<\/span> <span class=\"n\">result<\/span><span class=\"p\">.<\/span><span class=\"n\">candidates<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">top_candidate<\/span><span class=\"p\">.<\/span><span class=\"n\">confidence<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">confidence_threshold<\/span><span class=\"p\">:<\/span>\n        <span class=\"nf\">return <\/span><span class=\"p\">(<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">top_candidate<\/span><span class=\"p\">.<\/span><span class=\"n\">person_id<\/span><span class=\"p\">)<\/span>\n    <span class=\"nf\">return <\/span><span class=\"p\">(<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"bp\">None<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">open_door_simulation<\/span><span class=\"p\">(<\/span><span class=\"n\">person_name<\/span><span class=\"p\">):<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n    In a real system, trigger door unlock. \n    Here, just print a message for demonstration.\n    <\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">[ACCESS GRANTED] Welcome, <\/span><span class=\"si\">{<\/span><span class=\"n\">person_name<\/span><span class=\"si\">}<\/span><span class=\"s\">! The door is now unlocked.<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">deny_access_simulation<\/span><span class=\"p\">():<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Simulate denying access.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">[ACCESS DENIED] Unrecognized or unauthorized individual.<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">main<\/span><span class=\"p\">():<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Door Access Control (Local Photo Upload)<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Create clients\n<\/span>    <span class=\"n\">face_client<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">FaceClient<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">endpoint<\/span><span class=\"o\">=<\/span><span class=\"n\">FACE_ENDPOINT<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">credential<\/span><span class=\"o\">=<\/span><span class=\"nc\">AzureKeyCredential<\/span><span class=\"p\">(<\/span><span class=\"n\">FACE_API_KEY<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"n\">face_admin_client<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">FaceAdministrationClient<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">endpoint<\/span><span class=\"o\">=<\/span><span class=\"n\">FACE_ENDPOINT<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">credential<\/span><span class=\"o\">=<\/span><span class=\"nc\">AzureKeyCredential<\/span><span class=\"p\">(<\/span><span class=\"n\">FACE_API_KEY<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Provide path to the image you want to check\n<\/span>    <span class=\"n\">image_path<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">path\/to\/test_image.jpg<\/span><span class=\"sh\">\"<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"nf\">exists<\/span><span class=\"p\">(<\/span><span class=\"n\">image_path<\/span><span class=\"p\">):<\/span>\n        <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Error: File not found =&gt; <\/span><span class=\"si\">{<\/span><span class=\"n\">image_path<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n\n    <span class=\"k\">with<\/span> <span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">image_path<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">rb<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span> <span class=\"k\">as<\/span> <span class=\"n\">f<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">img_bytes<\/span> <span class=\"o\">=<\/span> <span class=\"n\">f<\/span><span class=\"p\">.<\/span><span class=\"nf\">read<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n        <span class=\"c1\"># DETECT face\n<\/span>        <span class=\"n\">detected_faces<\/span> <span class=\"o\">=<\/span> <span class=\"n\">face_client<\/span><span class=\"p\">.<\/span><span class=\"nf\">detect<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">image<\/span><span class=\"o\">=<\/span><span class=\"n\">img_bytes<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">detection_model<\/span><span class=\"o\">=<\/span><span class=\"n\">FaceDetectionModel<\/span><span class=\"p\">.<\/span><span class=\"n\">DETECTION03<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">recognition_model<\/span><span class=\"o\">=<\/span><span class=\"n\">FaceRecognitionModel<\/span><span class=\"p\">.<\/span><span class=\"n\">RECOGNITION04<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">return_face_id<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">return_face_attributes<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"n\">FaceAttributeTypeRecognition04<\/span><span class=\"p\">.<\/span><span class=\"n\">QUALITY_FOR_RECOGNITION<\/span><span class=\"p\">]<\/span>\n        <span class=\"p\">)<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">detected_faces<\/span><span class=\"p\">:<\/span>\n            <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">No faces detected in the image. Access denied.<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">return<\/span>\n\n        <span class=\"c1\"># For simplicity, just use the first face\n<\/span>        <span class=\"n\">face<\/span> <span class=\"o\">=<\/span> <span class=\"n\">detected_faces<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n        <span class=\"k\">if<\/span> <span class=\"n\">face<\/span><span class=\"p\">.<\/span><span class=\"n\">face_attributes<\/span><span class=\"p\">.<\/span><span class=\"n\">quality_for_recognition<\/span> <span class=\"o\">==<\/span> <span class=\"n\">QualityForRecognition<\/span><span class=\"p\">.<\/span><span class=\"n\">LOW<\/span><span class=\"p\">:<\/span>\n            <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Face quality too low for recognition. Access denied.<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">return<\/span>\n\n        <span class=\"n\">recognized<\/span><span class=\"p\">,<\/span> <span class=\"n\">person_id<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">check_access<\/span><span class=\"p\">(<\/span><span class=\"n\">face_client<\/span><span class=\"p\">,<\/span> <span class=\"n\">face<\/span><span class=\"p\">.<\/span><span class=\"n\">face_id<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"n\">recognized<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">person_id<\/span><span class=\"p\">:<\/span>\n            <span class=\"c1\"># Retrieve the person's details to say hello by name\n<\/span>            <span class=\"n\">person_info<\/span> <span class=\"o\">=<\/span> <span class=\"n\">face_admin_client<\/span><span class=\"p\">.<\/span><span class=\"n\">large_person_group<\/span><span class=\"p\">.<\/span><span class=\"nf\">get_person<\/span><span class=\"p\">(<\/span>\n                <span class=\"n\">large_person_group_id<\/span><span class=\"o\">=<\/span><span class=\"n\">LARGE_PERSON_GROUP_ID<\/span><span class=\"p\">,<\/span>\n                <span class=\"n\">person_id<\/span><span class=\"o\">=<\/span><span class=\"n\">person_id<\/span>\n            <span class=\"p\">)<\/span>\n            <span class=\"c1\"># Greet by name\n<\/span>            <span class=\"nf\">open_door_simulation<\/span><span class=\"p\">(<\/span><span class=\"n\">person_info<\/span><span class=\"p\">.<\/span><span class=\"n\">name<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n            <span class=\"nf\">deny_access_simulation<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"k\">except<\/span> <span class=\"nb\">Exception<\/span> <span class=\"k\">as<\/span> <span class=\"n\">e<\/span><span class=\"p\">:<\/span>\n        <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Error: <\/span><span class=\"si\">{<\/span><span class=\"n\">e<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">if<\/span> <span class=\"n\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">__main__<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span>\n    <span class=\"nf\">main<\/span><span class=\"p\">()<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\"><\/span>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u062a\u0634\u062e\u06cc\u0635 \u0634\u0627\u0645\u0644 \u0647\u0631 \u062f\u0648 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0627\u0633\u06a9 \u0648 \u06a9\u06cc\u0641\u06cc\u062a_FOR_RECOGNITION \u0627\u0633\u062a.<\/li>\n<li>\u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u0634\u0646\u0627\u062e\u062a \u060c \u0627\u0632 NOSE_AND_MOUTH_COVERED == \u0635\u062d\u06cc\u062d \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc \u062f\u0647\u06cc\u0645.<\/li>\n<li>\u0627\u06af\u0631 \u0628\u0647 \u0631\u0633\u0645\u06cc\u062a \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u0648\u062f (\u0627\u0639\u062a\u0645\u0627\u062f \u0628\u0647 \u0646\u0641\u0633> = 0.7) \u060c \u0645\u0627 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u060c \u0645\u0627 \u062d\u0636\u0648\u0631 \u0631\u0627 \u0627\u0646\u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5_%D9%88%D8%A8_%DA%A9%D9%85_%D8%AF%D8%B1_%D8%B2%D9%85%D8%A7%D9%86_%D9%88%D8%A7%D9%82%D8%B9%DB%8C\"><\/span>\n<p>  \u062a\u0634\u062e\u06cc\u0635 \u0648\u0628 \u06a9\u0645 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u062f\u0627\u0648\u0645 (\u0645\u0627\u0646\u0646\u062f \u062f\u0631\u0648\u0627\u0632\u0647 \u0648\u0631\u0648\u062f\u06cc \u06cc\u0627 \u0645\u062d\u0644 \u067e\u0630\u06cc\u0631\u0634) \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 OpenCV \u0642\u0627\u0628 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0632 \u0648\u0628 \u06a9\u0645 \u062e\u0648\u062f \u0636\u0628\u0637 \u06a9\u0646\u06cc\u062f \u060c \u0633\u067e\u0633 \u0628\u0627 Azure Face \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f \u062a\u0627 \u0645\u0627\u0633\u06a9 \u0648 \u0634\u0646\u0627\u062e\u062a \u0631\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0646\u0627\u0645 \u067e\u0631\u0648\u0646\u062f\u0647: RealTime_WebCam_Detection.py<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"n\">os<\/span>\n<span class=\"kn\">import<\/span> <span class=\"n\">cv2<\/span>\n<span class=\"kn\">import<\/span> <span class=\"n\">time<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">azure.core.credentials<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">AzureKeyCredential<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">azure.ai.vision.face<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">FaceClient<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">azure.ai.vision.face.models<\/span> <span class=\"kn\">import<\/span> <span class=\"p\">(<\/span>\n    <span class=\"n\">FaceDetectionModel<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">FaceRecognitionModel<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">FaceAttributeTypeDetection03<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">FaceAttributeTypeRecognition04<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">QualityForRecognition<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Replace with your actual values or environment variables\n<\/span><span class=\"n\">FACE_API_KEY<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">environ<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">FACE_APIKEY<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span> <span class=\"ow\">or<\/span> <span class=\"sh\">\"<\/span><span class=\"s\"><yourfaceapikey\/><\/span><span class=\"sh\">\"<\/span>\n<span class=\"n\">FACE_ENDPOINT<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">environ<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">FACE_ENDPOINT<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span> <span class=\"ow\">or<\/span> <span class=\"sh\">\"<\/span><span class=\"s\"><yourfaceapiendpoint\/><\/span><span class=\"sh\">\"<\/span>\n\n<span class=\"c1\"># Must match your trained Large Person Group\n<\/span><span class=\"n\">LARGE_PERSON_GROUP_ID<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">my-lpg-local-upload<\/span><span class=\"sh\">\"<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">identify_person<\/span><span class=\"p\">(<\/span><span class=\"n\">face_client<\/span><span class=\"p\">,<\/span> <span class=\"n\">face_id<\/span><span class=\"p\">,<\/span> <span class=\"n\">threshold<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.7<\/span><span class=\"p\">):<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Identify the face in the LPG. Returns (True, person_id) if recognized.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"n\">results<\/span> <span class=\"o\">=<\/span> <span class=\"n\">face_client<\/span><span class=\"p\">.<\/span><span class=\"nf\">identify_from_large_person_group<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">face_ids<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"n\">face_id<\/span><span class=\"p\">],<\/span>\n        <span class=\"n\">large_person_group_id<\/span><span class=\"o\">=<\/span><span class=\"n\">LARGE_PERSON_GROUP_ID<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">results<\/span> <span class=\"ow\">or<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">results<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">].<\/span><span class=\"n\">candidates<\/span><span class=\"p\">:<\/span>\n        <span class=\"nf\">return <\/span><span class=\"p\">(<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"bp\">None<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"n\">candidate<\/span> <span class=\"o\">=<\/span> <span class=\"n\">results<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">].<\/span><span class=\"n\">candidates<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n    <span class=\"nf\">return <\/span><span class=\"p\">(<\/span><span class=\"n\">candidate<\/span><span class=\"p\">.<\/span><span class=\"n\">confidence<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">threshold<\/span><span class=\"p\">,<\/span> <span class=\"n\">candidate<\/span><span class=\"p\">.<\/span><span class=\"n\">person_id<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">main<\/span><span class=\"p\">():<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">[INFO] Starting Real-Time Face Mask &amp; Recognition Detection<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Create FaceClient\n<\/span>    <span class=\"n\">face_client<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">FaceClient<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">endpoint<\/span><span class=\"o\">=<\/span><span class=\"n\">FACE_ENDPOINT<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">credential<\/span><span class=\"o\">=<\/span><span class=\"nc\">AzureKeyCredential<\/span><span class=\"p\">(<\/span><span class=\"n\">FACE_API_KEY<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Open the default webcam\n<\/span>    <span class=\"n\">cap<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"nc\">VideoCapture<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">cap<\/span><span class=\"p\">.<\/span><span class=\"nf\">isOpened<\/span><span class=\"p\">():<\/span>\n        <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">[ERROR] Could not open webcam.<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n\n    <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">while<\/span> <span class=\"bp\">True<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">ret<\/span><span class=\"p\">,<\/span> <span class=\"n\">frame<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cap<\/span><span class=\"p\">.<\/span><span class=\"nf\">read<\/span><span class=\"p\">()<\/span>\n            <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">ret<\/span><span class=\"p\">:<\/span>\n                <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">[ERROR] Failed to read frame from webcam.<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n                <span class=\"k\">break<\/span>\n\n            <span class=\"c1\"># Encode current frame to JPEG\n<\/span>            <span class=\"n\">_<\/span><span class=\"p\">,<\/span> <span class=\"n\">img_encoded<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"nf\">imencode<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">.jpg<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">frame<\/span><span class=\"p\">)<\/span>\n            <span class=\"n\">img_bytes<\/span> <span class=\"o\">=<\/span> <span class=\"n\">img_encoded<\/span><span class=\"p\">.<\/span><span class=\"nf\">tobytes<\/span><span class=\"p\">()<\/span>\n\n            <span class=\"c1\"># Detect faces\n<\/span>            <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n                <span class=\"n\">faces<\/span> <span class=\"o\">=<\/span> <span class=\"n\">face_client<\/span><span class=\"p\">.<\/span><span class=\"nf\">detect<\/span><span class=\"p\">(<\/span>\n                    <span class=\"n\">image<\/span><span class=\"o\">=<\/span><span class=\"n\">img_bytes<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">detection_model<\/span><span class=\"o\">=<\/span><span class=\"n\">FaceDetectionModel<\/span><span class=\"p\">.<\/span><span class=\"n\">DETECTION03<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">recognition_model<\/span><span class=\"o\">=<\/span><span class=\"n\">FaceRecognitionModel<\/span><span class=\"p\">.<\/span><span class=\"n\">RECOGNITION04<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">return_face_id<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">return_face_attributes<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span>\n                        <span class=\"n\">FaceAttributeTypeDetection03<\/span><span class=\"p\">.<\/span><span class=\"n\">MASK<\/span><span class=\"p\">,<\/span>\n                        <span class=\"n\">FaceAttributeTypeRecognition04<\/span><span class=\"p\">.<\/span><span class=\"n\">QUALITY_FOR_RECOGNITION<\/span>\n                    <span class=\"p\">]<\/span>\n                <span class=\"p\">)<\/span>\n            <span class=\"k\">except<\/span> <span class=\"nb\">Exception<\/span> <span class=\"k\">as<\/span> <span class=\"n\">e<\/span><span class=\"p\">:<\/span>\n                <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">[ERROR] Azure Face detection error: <\/span><span class=\"si\">{<\/span><span class=\"n\">e<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n                <span class=\"k\">continue<\/span>\n\n            <span class=\"c1\"># For each face, check mask &amp; recognition\n<\/span>            <span class=\"k\">for<\/span> <span class=\"n\">face<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">faces<\/span><span class=\"p\">:<\/span>\n                <span class=\"c1\"># Draw bounding box\n<\/span>                <span class=\"n\">rect<\/span> <span class=\"o\">=<\/span> <span class=\"n\">face<\/span><span class=\"p\">.<\/span><span class=\"n\">face_rectangle<\/span>\n                <span class=\"n\">top<\/span><span class=\"p\">,<\/span> <span class=\"n\">left<\/span><span class=\"p\">,<\/span> <span class=\"n\">width<\/span><span class=\"p\">,<\/span> <span class=\"n\">height<\/span> <span class=\"o\">=<\/span> <span class=\"n\">rect<\/span><span class=\"p\">.<\/span><span class=\"n\">top<\/span><span class=\"p\">,<\/span> <span class=\"n\">rect<\/span><span class=\"p\">.<\/span><span class=\"n\">left<\/span><span class=\"p\">,<\/span> <span class=\"n\">rect<\/span><span class=\"p\">.<\/span><span class=\"n\">width<\/span><span class=\"p\">,<\/span> <span class=\"n\">rect<\/span><span class=\"p\">.<\/span><span class=\"n\">height<\/span>\n                <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"nf\">rectangle<\/span><span class=\"p\">(<\/span><span class=\"n\">frame<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"n\">left<\/span><span class=\"p\">,<\/span> <span class=\"n\">top<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"n\">left<\/span> <span class=\"o\">+<\/span> <span class=\"n\">width<\/span><span class=\"p\">,<\/span> <span class=\"n\">top<\/span> <span class=\"o\">+<\/span> <span class=\"n\">height<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">),<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n\n                <span class=\"c1\"># Default label\n<\/span>                <span class=\"n\">msg<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">No Mask Detected<\/span><span class=\"sh\">\"<\/span>\n\n                <span class=\"c1\"># Check mask coverage\n<\/span>                <span class=\"n\">mask_data<\/span> <span class=\"o\">=<\/span> <span class=\"n\">face<\/span><span class=\"p\">.<\/span><span class=\"n\">face_attributes<\/span><span class=\"p\">.<\/span><span class=\"n\">mask<\/span>\n                <span class=\"k\">if<\/span> <span class=\"n\">mask_data<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">mask_data<\/span><span class=\"p\">.<\/span><span class=\"n\">nose_and_mouth_covered<\/span><span class=\"p\">:<\/span>\n                    <span class=\"c1\"># Check face quality\n<\/span>                    <span class=\"k\">if<\/span> <span class=\"n\">face<\/span><span class=\"p\">.<\/span><span class=\"n\">face_attributes<\/span><span class=\"p\">.<\/span><span class=\"n\">quality_for_recognition<\/span> <span class=\"o\">!=<\/span> <span class=\"n\">QualityForRecognition<\/span><span class=\"p\">.<\/span><span class=\"n\">LOW<\/span><span class=\"p\">:<\/span>\n                        <span class=\"n\">recognized<\/span><span class=\"p\">,<\/span> <span class=\"n\">person_id<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">identify_person<\/span><span class=\"p\">(<\/span><span class=\"n\">face_client<\/span><span class=\"p\">,<\/span> <span class=\"n\">face<\/span><span class=\"p\">.<\/span><span class=\"n\">face_id<\/span><span class=\"p\">)<\/span>\n                        <span class=\"k\">if<\/span> <span class=\"n\">recognized<\/span><span class=\"p\">:<\/span>\n                            <span class=\"n\">msg<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Recognized + Masked<\/span><span class=\"sh\">\"<\/span>\n                            <span class=\"c1\"># If you want the person's actual name:\n<\/span>                            <span class=\"c1\"># (You\u2019d need the FaceAdministrationClient here)\n<\/span>                            <span class=\"c1\"># person_info = face_admin_client.large_person_group.get_person(\n<\/span>                            <span class=\"c1\">#     LARGE_PERSON_GROUP_ID, person_id\n<\/span>                            <span class=\"c1\"># )\n<\/span>                            <span class=\"c1\"># msg = f\"{person_info.name} + Masked\"\n<\/span>                        <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n                            <span class=\"n\">msg<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Unknown, Masked<\/span><span class=\"sh\">\"<\/span>\n                    <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n                        <span class=\"n\">msg<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Low Quality Face<\/span><span class=\"sh\">\"<\/span>\n                <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n                    <span class=\"n\">msg<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">No\/Improper Mask<\/span><span class=\"sh\">\"<\/span>\n\n                <span class=\"c1\"># Put text on frame\n<\/span>                <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"nf\">putText<\/span><span class=\"p\">(<\/span><span class=\"n\">frame<\/span><span class=\"p\">,<\/span> <span class=\"n\">msg<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"n\">left<\/span><span class=\"p\">,<\/span> <span class=\"n\">top<\/span> <span class=\"o\">-<\/span> <span class=\"mi\">10<\/span><span class=\"p\">),<\/span> <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"n\">FONT_HERSHEY_SIMPLEX<\/span><span class=\"p\">,<\/span> \n                            <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">),<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n\n            <span class=\"c1\"># Show the result\n<\/span>            <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"nf\">imshow<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">Real-Time Mask &amp; Recognition<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">frame<\/span><span class=\"p\">)<\/span>\n\n            <span class=\"c1\"># Press 'q' to quit\n<\/span>            <span class=\"k\">if<\/span> <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"nf\">waitKey<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span> <span class=\"o\">&amp;<\/span> <span class=\"mh\">0xFF<\/span> <span class=\"o\">==<\/span> <span class=\"nf\">ord<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">q<\/span><span class=\"sh\">'<\/span><span class=\"p\">):<\/span>\n                <span class=\"k\">break<\/span>\n\n            <span class=\"n\">time<\/span><span class=\"p\">.<\/span><span class=\"nf\">sleep<\/span><span class=\"p\">(<\/span><span class=\"mf\">0.3<\/span><span class=\"p\">)<\/span>  <span class=\"c1\"># Slight delay to reduce API calls\n<\/span>\n    <span class=\"k\">except<\/span> <span class=\"nb\">KeyboardInterrupt<\/span><span class=\"p\">:<\/span>\n        <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">[INFO] Interrupted by user.<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">finally<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">cap<\/span><span class=\"p\">.<\/span><span class=\"nf\">release<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">cv2<\/span><span class=\"p\">.<\/span><span class=\"nf\">destroyAllWindows<\/span><span class=\"p\">()<\/span>\n\n<span class=\"k\">if<\/span> <span class=\"n\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">__main__<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span>\n    <span class=\"nf\">main<\/span><span class=\"p\">()<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF-2\"><\/span>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>OpenCV \u0642\u0627\u0628 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0632 \u0648\u0628 \u06a9\u0645 \u0628\u062f\u0633\u062a \u0645\u06cc \u0622\u0648\u0631\u062f.<\/li>\n<li>\u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647 \u0644\u0627\u062c\u0648\u0631\u062f \u0634\u0627\u0645\u0644 \u0645\u0627\u0633\u06a9 \u0648 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u0627\u0633\u062a.<\/li>\n<li>\u062c\u0639\u0628\u0647 \u0647\u0627\u06cc \u0645\u062d\u062f\u0648\u062f: \u0645\u0627 \u0645\u0633\u062a\u0637\u06cc\u0644 \u0647\u0627 \u0648 \u0645\u062a\u0646 \u0631\u0627 \u062f\u0631 \u0641\u06cc\u0644\u0645 \u062a\u0631\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/li>\n<li>\u0627\u06af\u0631 \u0635\u0648\u0631\u062a \u0628\u0647 \u0631\u0633\u0645\u06cc\u062a \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0627\u0633\u06a9 \u0634\u0648\u062f \u060c \u0645\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 &#8220;\u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 + \u0646\u0642\u0627\u0628 \u062f\u0627\u0631&#8221; \u0628\u0631\u0686\u0633\u0628 \u0645\u06cc \u0632\u0646\u06cc\u0645. \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u060c \u0645\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 &#8220;\u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u060c \u0646\u0642\u0627\u0628&#8221; \u06cc\u0627 &#8220;\u0645\u0627\u0633\u06a9 \u0628\u062f\u0648\u0646\/\u0646\u0627\u062f\u0631\u0633\u062a&#8221; \u0628\u0631\u0686\u0633\u0628 \u0645\u06cc \u0632\u0646\u06cc\u0645.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AF%D8%BA%D8%A7%D9%85_%D8%A8%D8%A7_%DB%8C%DA%A9_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D8%AD%D8%B6%D9%88%D8%B1\"><\/span>\n<p>  \u0627\u062f\u063a\u0627\u0645 \u0628\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062d\u0636\u0648\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u060c \u0634\u0645\u0627:<\/p>\n<ul>\n<li>\u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062f\u0631 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627 Timestamps (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c SQL \u060c Cosmos DB).<\/li>\n<li>\u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0631\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0634\u062e\u06cc\u0635 \u0648 \u0646\u0642\u0627\u0628 \u0632\u062f\u0646.<\/li>\n<li>\u0627\u06af\u0631 \u06cc\u06a9 \u0641\u0631\u062f \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u06cc\u0627 \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f \u060c \u0627\u0639\u0644\u0627\u0646 \u0647\u0627 \u06cc\u0627 \u0645\u0646\u0637\u0642 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%DB%8C%D8%A8_%DB%8C%D8%A7%D8%A8%DB%8C_%D9%88_%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4%D9%87%D8%A7\"><\/span>\n<p>  \u0639\u06cc\u0628 \u06cc\u0627\u0628\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><em>\u0622\u0633\u062a\u0627\u0646\u0647 \u0627\u0639\u062a\u0645\u0627\u062f \u0628\u0647 \u0646\u0641\u0633<\/em><br \/>0.7 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062a\u0639\u0627\u062f\u0644 \u06a9\u0627\u0630\u0628 \u0631\u0627 \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0631\u062f \u0631\u062f \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0628\u0627 \u0627\u0645\u0646\u06cc\u062a \u0628\u0627\u0644\u0627\u062a\u0631 \u060c \u0628\u0627\u0644\u0627\u062a\u0631 \u0628\u0631\u0648\u06cc\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c 0.8).<\/p>\n<p><em>\u0634\u0631\u0627\u06cc\u0637 \u06a9\u0645 \u0646\u0648\u0631<\/em><br \/>\u0646\u0648\u0631\u067e\u0631\u062f\u0627\u0632\u06cc \u0636\u0639\u06cc\u0641 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0642\u062a \u0648 \u06a9\u06cc\u0641\u06cc\u062a \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f. \u0646\u0648\u0631 \u0645\u062d\u06cc\u0637 \u06cc\u0627 \u062f\u0648\u0631\u0628\u06cc\u0646 IR \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u06a9\u0645 \u0646\u0648\u0631 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><em>\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e API<\/em><br \/>\u0631\u062f\u06cc\u0641 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062f\u0631 \u0647\u0631 \u062f\u0642\u06cc\u0642\u0647 \u062f\u0627\u0631\u062f. \u0627\u06af\u0631 30 \u0641\u0631\u06cc\u0645 \u062f\u0631 \u062b\u0627\u0646\u06cc\u0647 \u0636\u0628\u0637 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0628\u0647 \u0633\u0631\u0639\u062a \u0627\u0632 \u0622\u0646 \u0641\u0631\u0627\u062a\u0631 \u0645\u06cc \u0631\u0648\u06cc\u062f!<br \/>\u0627\u0632 THROTTLING (TIME.SLEEP (&#8230;)) \u06cc\u0627 \u06cc\u06a9 \u0631\u062f\u06cc\u0641 \u062e\u062f\u0645\u0627\u062a \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><em>\u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc \u0648 \u0627\u0645\u0646\u06cc\u062a<\/em><br \/>\u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647 \u062a\u0627\u0628\u0639 \u0642\u0648\u0627\u0646\u06cc\u0646 \u062d\u0645\u0627\u06cc\u062a \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627 (GDPR \u060c HIPAA \u0648 \u063a\u06cc\u0631\u0647) \u0627\u0633\u062a.<br \/>\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc Face \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u06a9\u0644\u06cc\u062f API \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u0645\u0646 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0637\u0627\u0642 Key Azure).<\/p>\n<p><em>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0646\u0637\u0642\u0647 \u0627\u0632 \u0645\u0627\u0633\u06a9<\/em><br \/>\u0627\u0633\u0646\u0627\u062f \u0644\u0627\u062c\u0648\u0631\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0645\u0646\u0637\u0642\u0647 \u0634\u0645\u0627 \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0627\u0633\u06a9 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.<br \/>\u067e\u0627\u06cc\u0627\u0646<\/p>\n<p>\u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628 Azure AI Face \u0648 OpenCV \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u062d\u0636\u0648\u0631 \u0648 \u063a\u06cc\u0627\u0628 \u0642\u0648\u06cc \u0628\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0647\u0645 \u0647\u0648\u06cc\u062a \u0648 \u0647\u0645 \u0645\u0627\u0633\u06a9 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc \u0628\u0647\u062f\u0627\u0634\u062a\u06cc \u0645\u062f\u0631\u0646 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0628\u062f\u0648\u0646 \u0644\u0645\u0633 \u0627\u0633\u062a \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u06cc\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0646\u0642\u0627\u0637 \u062f\u0633\u062a\u0631\u0633\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u06af\u0633\u062a\u0631\u0634 \u06cc\u0627\u0628\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A8%D8%B9%D8%AF%DB%8C\"><\/span>\n<p>  \u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u06a9\u0627\u0631 \u060c \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u060c \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0648 \u062d\u0633\u0627\u0628\u0631\u0633\u06cc \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u06cc\u062f.<\/li>\n<li>\u0628\u0627 \u0633\u062e\u062a \u0627\u0641\u0632\u0627\u0631 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0642\u0641\u0644 \u062f\u0631\u0628 \u0648\u0627\u0642\u0639\u06cc \u06cc\u0627 \u0686\u0631\u062e \u062f\u0633\u062a\u06cc \u0627\u062f\u063a\u0627\u0645 \u0634\u0648\u06cc\u062f.<\/li>\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0648\u0627\u0646 \u0628\u0627\u0644\u0627\u062a\u0631 \u06cc\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u060c \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0622\u0641\u0644\u0627\u06cc\u0646 \u06cc\u0627 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0631\u0627 \u06a9\u0627\u0648\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p>\u0633\u0627\u062e\u062a\u0645\u0627\u0646 \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u067e\u0633 \u0627\u0632 \u0641\u0647\u0631\u0633\u062a \u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062a\u0623\u06cc\u06cc\u062f \u0647\u0648\u06cc\u062a \u0628\u0631\u0627\u06cc \u062d\u0636\u0648\u0631 \u060c \u0628\u0647 \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u06cc\u0627 \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062e\u0648\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u06a9\u0647 \u0645\u0627\u0633\u06a9 \u0628\u067e\u0648\u0634\u0646\u062f. \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0633\u0627\u062f\u0647 \u0631\u0627 \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f \u0633\u06cc\u0633\u062a\u0645 \u062d\u0636\u0648\u0631 \u062f\u0631 \u062a\u0634\u062e\u06cc\u0635 \u0686\u0647\u0631\u0647 \u0628\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u0627\u0633\u06a9 \u0635\u0648\u0631\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Azure ai face api\u0628\u0634\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":97598,"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-97597","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/97597","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=97597"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/97597\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/97598"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=97597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=97597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=97597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}