{"id":36726,"date":"2019-10-31T22:13:23","date_gmt":"2019-10-31T19:13:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv\/"},"modified":"2019-10-31T22:13:23","modified_gmt":"2019-10-31T19:13:23","slug":"stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv","title":{"rendered":"Nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje fytyre duke p\u00ebrdorur Golang dhe OpenCV","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje fytyre duke p\u00ebrdorur Golang dhe OpenCV\" src=\"\/wp-content\/uploads\/2019\/08\/053427f29ed319ede4498f2239044341.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nOpenCV \u2014 nj\u00eb bibliotek\u00eb e zhvilluar p\u00ebr projekte n\u00eb vizionin kompjuterik. Ajo ekziston prej rreth 20 vjet\u00ebsh. E kam p\u00ebrdorur q\u00eb n\u00eb kolegj dhe akoma e p\u00ebrdor p\u00ebr projektet e mia n\u00eb C++ dhe Python, pasi ka mb\u00ebshtetje t\u00eb mir\u00eb p\u00ebr k\u00ebto gjuh\u00eb.<\/p>\n<p>Por kur fillova t\u00eb studioja dhe t\u00eb p\u00ebrdorja Go, m\u00eb interesoi n\u00ebse mund t\u2019i aplikoj OpenCV p\u00ebr k\u00ebt\u00eb gjuh\u00eb. N\u00eb at\u00eb koh\u00eb ishin tashm\u00eb disa shembuj dhe tutoriale p\u00ebr integrim, por m\u00eb dukeshin shum\u00eb t\u00eb komplikuara. Pak m\u00eb von\u00eb kalova n\u00eb duar nj\u00eb wrapper t\u00eb krijuar nga ekipi i The Hybrid Group. N\u00eb k\u00ebt\u00eb artikull do t\u00eb tregoj se si t\u00eb filloni me GoCV, duke zhvilluar nj\u00eb sistem t\u00eb thjesht\u00eb p\u00ebr njohjen e fytyrave me kaskadat Haar (Haar Cascades).<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Skillbox rekomandon:<\/b> Kurs praktik <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/python\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PTNDEV&amp;utm_content=articles&amp;utm_term=govideo\">\u00abProgramues Python nga zero\u00bb<\/a><\/noindex>.<\/p>\n<p><b>Kujtojm\u00eb:<\/b> <i>p\u00ebr t\u00eb gjith\u00eb lexuesit e \"Habra\" \u2014 zbritje prej 10,000 rublej p\u00ebr regjistrimin n\u00eb \u00e7do kurs Skillbox me kodin promocional \"Habr\".<\/i>\n<\/p><\/blockquote>\n<p>\n<b>\u00c7far\u00eb do t\u00eb nevojitet:<\/b><\/p>\n<ul>\n<li>Go;<\/li>\n<li>OpenCV (linket p\u00ebr instaluesin m\u00eb posht\u00eb);<\/li>\n<li>kamera web ose kamera e zakonshme.<\/li>\n<\/ul>\n<p>\n<b>Instalimi<\/b><\/p>\n<ul>\n<li>Linux: <noindex><a rel=\"nofollow\" href=\"https:\/\/gocv.io\/getting-started\/linux\/\">gocv.io\/getting-started\/linux<\/a><\/noindex><\/li>\n<li>macOS: <noindex><a rel=\"nofollow\" href=\"https:\/\/gocv.io\/getting-started\/macos\/\">gocv.io\/getting-started\/macos<\/a><\/noindex><\/li>\n<li>Windows: <noindex><a rel=\"nofollow\" href=\"https:\/\/gocv.io\/getting-started\/windows\/\">gocv.io\/getting-started\/windows<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Shembulli 1<\/h3>\n<p>\nN\u00eb shembullin e par\u00eb do t\u00eb p\u00ebrpiqemi t\u00eb krijojm\u00eb nj\u00eb aplikacion q\u00eb hap nj\u00eb dritare me nj\u00eb demonstrim t\u00eb rrjedh\u00ebs video t\u00eb kamer\u00ebs.<\/p>\n<p>S\u00eb pari, duhet t\u00eb importojm\u00eb bibliotekat e nevojshme p\u00ebr pun\u00eb.<\/p>\n<p><i>import (<br \/>\n \"log\"<br \/>\n \"gocv.io\/x\/gocv\"<br \/>\n)<\/i><\/p>\n<p>Pasi t\u00eb krijoni objektin VideoCapture duke p\u00ebrdorur funksionin VideoCaptureDevice. Ky i fundit lejon kapjen e videostream-it nga kamera. Funksioni p\u00ebrdor nj\u00eb num\u00ebr t\u00eb plot\u00eb si paramet\u00ebr (i cili p\u00ebrfaq\u00ebson ID-n\u00eb e pajisjes).<\/p>\n<pre><code class=\"go\">webcam, err := gocv.VideoCaptureDevice(0)\nif err != nil {    log.Fatalf(\u201cgabim n\u00eb hapjen e kamer\u00ebs: %v\u201d, err)\n}\ndefer webcam.Close()<\/code><\/pre>\n<p>\nTani nevojitet t\u00eb krijoni nj\u00eb matric\u00eb n-dimensionale. Ajo do t\u00eb ruaj\u00eb imazhet e lexuara nga kamera.<\/p>\n<pre><code class=\"go\">img := gocv.NewMat()\ndefer img.Close()<\/code><\/pre>\n<p>\nP\u00ebr t\u00eb shfaqur videopotimin nevojitet t\u00eb krijoni nj\u00eb dritare \u2014 kjo mund t\u00eb b\u00ebhet duke p\u00ebrdorur funksionin NewWindow.<\/p>\n<pre><code class=\"go\">window := gocv.NewWindow(\u201cwebcamwindow\u201d)\ndefer window.Close()<\/code><\/pre>\n<p>\nTani kalojm\u00eb n\u00eb pjes\u00ebn m\u00eb interesante.<\/p>\n<p>Pasi video p\u00ebrb\u00ebn nj\u00eb stream t\u00eb vazhduesh\u00ebm t\u00eb kadrove-imazhe, do t\u00eb nevojitet t\u00eb krijoni nj\u00eb cik\u00ebl t\u00eb pafund p\u00ebr t\u00eb lexuar vazhdimisht videopotimin e kamer\u00ebs. P\u00ebr k\u00ebt\u00eb, nevojitet metoda Read e tipit VideoCapture. Ajo do t\u00eb pres\u00eb tipin Mat (matric\u00ebn q\u00eb krijuam m\u00eb sip\u00ebr), duke kthyer nj\u00eb vler\u00eb logjike q\u00eb tregon n\u00ebse kadri nga VideoCapture u lexua me sukses apo jo.<\/p>\n<pre><code class=\"go\">for {     \n        if ok := webcam.Read(&amp;img); !ok || img.Empty( {\n        log.Println(\u201cNuk arriti t\u00eb lexoj\u00eb nga kameraja\u201d)    continue\n     }\n.\n.\n.\n}<\/code><\/pre>\n<p>\nTani duhet t\u00eb shfaqim korniz\u00ebn n\u00eb dritaren e krijuar. Pavar\u00ebsia p\u00ebr kalimin n\u00eb korniz\u00ebn tjet\u00ebr \u2014 50 ms.<\/p>\n<p><i>window.IMShow(img)<br \/>\nwindow.WaitKey(50)<\/i><\/p>\n<p>Pas nisjes s\u00eb aplikacionit, do t\u00eb hapet nj\u00eb dritare me rrjedh\u00ebn e videos nga kamera.<\/p>\n<p><img decoding=\"async\" alt=\"Nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje fytyre duke p\u00ebrdorur Golang dhe OpenCV\" src=\"\/wp-content\/uploads\/2019\/08\/02677722c3c3fb867f73917c53031f07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<pre><code class=\"go\">package main\n \nimport (\n\"log\"\n \n\"gocv.io\/x\/gocv\"\n)\n \nfunc main() {\nwebcam, err := gocv.VideoCaptureDevice(0)\nif err != nil {\n    log.Fatalf(\"error opening device: %v\", err)\n}\ndefer webcam.Close()\n \nimg := gocv.NewMat()\ndefer img.Close()\n \nwindow := gocv.NewWindow(\"webcamwindow\")\ndefer window.Close()\n \nfor {\nif ok := webcam.Read(&amp;img); !ok || img.Empty() {\nlog.Println(\"Nuk mund t\u00eb lexoj nga webcam\")\ncontinue\n}\n \nwindow.IMShow(img)\nwindow.WaitKey(50)\n}\n}<\/code><\/pre>\n<p><\/p>\n<h3>Shembulli 2<\/h3>\n<p>\nN\u00eb k\u00ebt\u00eb shembull, le ta p\u00ebrdorim shembullin e m\u00ebparsh\u00ebm dhe krijojm\u00eb nj\u00eb sistem p\u00ebr njohjen e fytyr\u00ebs duke u bazuar n\u00eb Haar Cascades (kaskadat Haar).<\/p>\n<p>Kaskadat Haar jan\u00eb klasifikues kaskad\u00eb q\u00eb trajnohen duke p\u00ebrdorur teknik\u00ebn e valeve Haar. Ato analizojn\u00eb piksel\u00ebt n\u00eb imazh p\u00ebr t\u00eb zbuluar karakteristika t\u00eb caktuara. P\u00ebr t\u00eb m\u00ebsuar m\u00eb shum\u00eb rreth Haar Cascades, mund t\u00eb ndiqni lidhjet m\u00eb posht\u00eb.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.cs.ubc.ca\/~lowe\/425\/slides\/13-ViolaJones.pdf?source=post_page---------------------------\">korniza e zbulimit t\u00eb objekteve Viola-Jones<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cascading_classifiers?source=post_page---------------------------\">klasifikuesit kaskad\u00eb<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Haar-like_feature?source=post_page---------------------------\">ve\u00e7oria si Haar<\/a><\/noindex><\/p>\n<p>Shkarkoni kaskadat e st\u00ebrvitura m\u00eb par\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/opencv\/opencv\/tree\/master\/data\/haarcascades?source=post_page---------------------------\">k\u00ebtu<\/a><\/noindex>. N\u00eb shembullin aktual, kaskadat do t\u00eb p\u00ebrdoren p\u00ebr identifikimin e fytyr\u00ebs s\u00eb nj\u00eb personi nga p\u00ebrpara.<\/p>\n<p>P\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb, nevojitet t\u00eb krijojm\u00eb nj\u00eb klasifikues dhe t'i japim atij nj\u00eb skedar t\u00eb trajnuar m\u00eb par\u00eb (linku \u00ebsht\u00eb dh\u00ebn\u00eb m\u00eb lart). Un\u00eb tashm\u00eb kam ngarkuar skedarin pencv_haarcascade_frontalface_default.xml n\u00eb direktorin\u00eb ku ndodhet programi yn\u00eb.<\/p>\n<pre><code class=\"go\">harrcascade := \u201copencv_haarcascade_frontalface_default.xml\u201d\nclassifier := gocv.NewCascadeClassifier()\nclassifier.Load(harrcascade)\ndefer classifier.Close()<\/code><\/pre>\n<p>\nP\u00ebr t\u00eb zbuluar fytyrat n\u00eb imazh, nevojitet t\u00eb p\u00ebrdorim metod\u00ebn <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hybridgroup\/gocv\/blob\/master\/objdetect.go?source=post_page---------------------------#L51\">DetectMultiScale<\/a><\/noindex>. Kjo funksion merr nj\u00eb kad\u00ebr (tipi Mat), i cili sapo \u00ebsht\u00eb lexuar nga burimi i kamer\u00ebs dhe kthen nj\u00eb varg t\u00eb tipit Rectangle. Madh\u00ebsia e vargut p\u00ebrfaq\u00ebson numrin e fytyrave q\u00eb klasifikuesi arriti t\u00eb zbuloj\u00eb n\u00eb kadrin e dh\u00ebn\u00eb. M\u00eb pas, p\u00ebr t'u siguruar se po shohim at\u00eb q\u00eb ai ka gjetur, le t\u00eb kalojm\u00eb p\u00ebrmes list\u00ebs s\u00eb drejtk\u00ebnd\u00ebshave dhe t\u00eb nxjerrim objektin Rectangle n\u00eb konsol\u00eb, duke krijuar nj\u00eb kufizim rreth drejtk\u00ebnd\u00ebshit t\u00eb zbuluar. Kjo mund t\u00eb b\u00ebhet me an\u00eb t\u00eb funksionit Rectangle. Ai do t\u00eb marr\u00eb Mat, q\u00eb \u00ebsht\u00eb lexuar nga kamera, objektin Rectangle q\u00eb \u00ebsht\u00eb kthyer nga metoda DetectMultiScale, ngjyr\u00ebn dhe trash\u00ebsin\u00eb p\u00ebr kufizimin.<\/p>\n<pre><code class=\"go\">p\u00ebr _, r := range rects {\nfmt.Println(\u201czbuluar\u201d, r)\ngocv.Rectangle(&amp;img, r, color, 2)\n}<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje fytyre duke p\u00ebrdorur Golang dhe OpenCV\" src=\"\/wp-content\/uploads\/2019\/08\/5c9128572d0f832325b2d19dd0d03b61.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n<img decoding=\"async\" alt=\"Nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje fytyre duke p\u00ebrdorur Golang dhe OpenCV\" src=\"\/wp-content\/uploads\/2019\/08\/57a901331c7f109067c7f254f982a2b0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<pre><code class=\"go\">paket kryesor\n \nimport (\n\"fmt\"\n\"image\/color\"\n\"log\"\n \n\"gocv.io\/x\/gocv\"\n)\n \nfunc main() {\nwebcam, err := gocv.VideoCaptureDevice(0)\nif err != nil {\nlog.Fatalf(\"gabim n\u00eb hapjen e kamer\u00ebs: %v\", err)\n}\ndefer webcam.Close()\n \nimg := gocv.NewMat()\ndefer img.Close()\n \nwindow := gocv.NewWindow(\"dritarja e kamer\u00ebs\")\ndefer window.Close()\n \nharrcascade := \"opencv_haarcascade_frontalface_default.xml\"\nclassifier := gocv.NewCascadeClassifier()\nclassifier.Load(harrcascade)\ndefer classifier.Close()\n \ncolor := color.RGBA{0, 255, 0, 0}\nfor {\nif ok := webcam.Read(&amp;img); !ok || img.Empty() {\nlog.Println(\"Nuk mund t\u00eb lexoj nga pajisja\")\ncontinue\n}\n \nrects := classifier.DetectMultiScale(img)\nfor _, r := range rects {\nfmt.Println(\"e zbuluar\", r)\ngocv.Rectangle(&amp;img, r, color, 3)\n}\n \nwindow.IMShow(img)\nwindow.WaitKey(50)\n}\n}<\/code><\/pre>\n<p>\nPo\u2026 ia dol\u00ebm! Tani kemi nj\u00eb sistem t\u00eb thjesht\u00eb njohjeje t\u00eb fytyr\u00ebs t\u00eb shkruar n\u00eb Go. N\u00eb t\u00eb ardhmen, planifikoj t\u00eb vazhdoj k\u00ebto eksperimentime dhe t\u00eb krijoj gj\u00ebra t\u00eb reja t\u00eb mrekullueshme duke kombinuar Go dhe OpenCV.<\/p>\n<p>N\u00ebse jeni t\u00eb interesuar, vler\u00ebsoni <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Niraj-Fonseka\/recognize?source=post_page---------------------------\">serverin web gRPC<\/a><\/noindex>, i shkruar n\u00eb Python dhe OpenCV. Ai streamon t\u00eb dh\u00ebna n\u00eb momentin e zbules\u00ebs s\u00eb fytyr\u00ebs. Kjo \u00ebsht\u00eb baza p\u00ebr krijimin e klient\u00ebve t\u00eb ndrysh\u00ebm n\u00eb gjuh\u00eb t\u00eb ndryshme programuese. Ata do t\u00eb ken\u00eb mund\u00ebsin\u00eb t\u00eb lidhen me serverin dhe t\u00eb lexojn\u00eb t\u00eb dh\u00ebnat prej tij.<\/p>\n<p>Faleminderit q\u00eb e lexuat artikullin!<\/p>\n<blockquote><p><b>Skillbox rekomandon:<\/b><\/p>\n<ul>\n<li>Kurs praktik dyvje\u00e7ar <noindex><a rel=\"nofollow\" href=\"https:\/\/iamwebdev.skillbox.ru\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=WEBDEVPRO&amp;utm_content=articles&amp;utm_term=govideo\">\u00abUn\u00eb jam zhvillues web PRO\u00bb<\/a><\/noindex>.<\/li>\n<li>Kurs online edukativ <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/java\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=JAVDEV&amp;utm_content=articles&amp;utm_term=govideo\">\u00abProfesioni Java-developer\u00bb<\/a><\/noindex>.<\/li>\n<li>Kurs praktik nj\u00ebvje\u00e7ar <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/php\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PHPDEV&amp;utm_content=articles&amp;utm_term=govideo\">\u00abPHP zhvillues nga 0 n\u00eb PRO\u00bb<\/a><\/noindex>.\n<\/li>\n<\/ul>\n<\/blockquote>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/462159\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>OpenCV \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u043c\u0443 \u0437\u0440\u0435\u043d\u0438\u044e. \u0415\u0439 \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e 20 \u043b\u0435\u0442. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0435 \u0435\u0449\u0435 \u0432 \u043a\u043e\u043b\u043b\u0435\u0434\u0436\u0435 \u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 C++ \u0438 Python, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u0442\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Go, \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c OpenCV \u0434\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-36726","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"OpenCV \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u043c\u0443 \u0437\u0440\u0435\u043d\u0438\u044e. \u0415\u0439 \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e 20 \u043b\u0435\u0442. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0435 \u0435\u0449\u0435 \u0432 \u043a\u043e\u043b\u043b\u0435\u0434\u0436\u0435 \u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 C++ \u0438 Python, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u0442\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Go, \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c OpenCV \u0434\u043b\u044f\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u043b\u0438\u0446 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Golang \u0438 OpenCV | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"OpenCV \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u043c\u0443 \u0437\u0440\u0435\u043d\u0438\u044e. \u0415\u0439 \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e 20 \u043b\u0435\u0442. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0435 \u0435\u0449\u0435 \u0432 \u043a\u043e\u043b\u043b\u0435\u0434\u0436\u0435 \u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 C++ \u0438 Python, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u0442\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Go, \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c OpenCV \u0434\u043b\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:13:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje t\u00eb fytyrave bazuar n\u00eb Golang dhe OpenCV | ProHoster","description":"OpenCV \u2014 nj\u00eb bibliotek\u00eb e zhvilluar p\u00ebr projekte t\u00eb vizionit kompjuterik. Ajo \u00ebsht\u00eb rreth 20 vje\u00e7are. Un\u00eb e kam p\u00ebrdorur at\u00eb q\u00eb n\u00eb kolegj dhe ende e p\u00ebrdor p\u00ebr projektet e mia n\u00eb C++ dhe Python, pasi ajo ka nj\u00eb mb\u00ebshtetje t\u00eb mir\u00eb p\u00ebr k\u00ebto gjuh\u00eb. Por kur fillova t\u00eb m\u00ebsoj dhe t\u00eb p\u00ebrdor Go, m'u b\u00eb interesante t\u00eb di n\u00ebse mund t\u00eb aplikoj OpenCV p\u00ebr","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u043b\u0438\u0446 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Golang \u0438 OpenCV | ProHoster","og:description":"OpenCV \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u043c\u0443 \u0437\u0440\u0435\u043d\u0438\u044e. \u0415\u0439 \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e 20 \u043b\u0435\u0442. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0435 \u0435\u0449\u0435 \u0432 \u043a\u043e\u043b\u043b\u0435\u0434\u0436\u0435 \u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 C++ \u0438 Python, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u0442\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Go, \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c OpenCV \u0434\u043b\u044f","og:url":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:13:23+00:00","article:modified_time":"2019-10-31T19:13:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36726","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:36:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:40:22","updated":"2026-01-22 04:36:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/36726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=36726"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/36726\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/27509"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=36726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=36726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=36726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}