{"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\/news\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv","title":{"rendered":"Po nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje t\u00eb fytyr\u00ebs duke p\u00ebrdorur Golang dhe OpenCV","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Po nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje t\u00eb fytyr\u00ebs 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 \u00ebsht\u00eb rreth 20 vje\u00e7are. E kam p\u00ebrdorur q\u00eb n\u00eb kolegj dhe vazhdoj ta aplikoj n\u00eb 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\u2019u b\u00eb interesant t\u00eb di n\u00ebse mund t\u00eb aplikoj OpenCV me k\u00ebt\u00eb gjuh\u00eb. N\u00eb at\u00eb koh\u00eb ishin t\u00eb pranish\u00ebm shembuj dhe tutoriale p\u00ebr integrimin, por m\u00eb dukeshin shum\u00eb t\u00eb komplikuara. Pak m\u00eb von\u00eb m\u00eb ra n\u00eb dor\u00eb nj\u00eb wrapper i krijuar nga ekipi 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\">\"Zhvillues Python nga zero\"<\/a><\/noindex>.<\/p>\n<p><b>Kujtojm\u00eb:<\/b> <i>p\u00ebr t\u00eb gjith\u00eb lexuesit e \u00abHabra\u00bb \u2014 zbritje prej 10,000 rublesh p\u00ebr regjistrimin n\u00eb \u00e7do kurs Skillbox me kodin promovues \u00abHabr\u00bb.<\/i>\n<\/p><\/blockquote>\n<p>\n<b>\u00c7far\u00eb do t\u00eb k\u00ebrkohet:<\/b><\/p>\n<ul>\n<li>Go;<\/li>\n<li>OpenCV (linkat p\u00ebr instaluesin m\u00eb posht\u00eb);<\/li>\n<li>nj\u00eb kamer\u00eb web ose normale.<\/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 videokanalit nga kamera.<\/p>\n<p>S\u00eb pari duhet t\u00eb importojm\u00eb bibliotekat e nevojshme p\u00ebr funksionim.<\/p>\n<p><i>import (<br \/>\n \u201clog\u201d<br \/>\n \u201cgocv.io\/x\/gocv\u201d<br \/>\n)<\/i><\/p>\n<p>M\u00eb pas, duhet t\u00eb krijojm\u00eb nj\u00eb objekt VideoCapture duke p\u00ebrdorur funksionin VideoCaptureDevice. Ky i fundit lejon kapjen e videokanalit p\u00ebrmes kamer\u00ebs. N\u00eb funksion p\u00ebrdoret nj\u00eb num\u00ebr i plot\u00eb si paramet\u00ebr (ai paraqet ID-n\u00eb e pajisjes).<\/p>\n<pre><code class=\"go\">webcam, err := gocv.VideoCaptureDevice(0)\nif err != nil { log.Fatalf(\u201cerror opening web cam: %v\u201d, err)\n}\ndefer webcam.Close()<\/code><\/pre>\n<p>\nTani duhet t\u00eb krijojm\u00eb 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 videokanalin, duhet t\u00eb krijojm\u00eb nj\u00eb dritare \u2014 kjo mund t\u00eb b\u00ebhet me 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>Duke qen\u00eb se video \u00ebsht\u00eb nj\u00eb rrjedh\u00eb e vazhdueshme e \u043a\u0430\u0434\u0440\u043e\u0432, do t\u00eb na duhet t\u00eb krijojm\u00eb nj\u00eb cik\u00ebl t\u00eb pafund p\u00ebr t\u00eb lexuar vazhdimisht videokanalin e kamer\u00ebs. P\u00ebr k\u00ebt\u00eb \u00ebsht\u00eb i nevojsh\u00ebm metoda Read e tipit VideoCapture. Ajo do t\u00eb pres\u00eb nj\u00eb tip Mat (matrica q\u00eb krijuam m\u00eb sip\u00ebr), duke kthyer nj\u00eb vler\u00eb logjike q\u00eb tregon n\u00ebse \u043a\u0430\u0434\u0440 nga VideoCapture u lexua me sukses ose jo.<\/p>\n<pre><code class=\"go\">for { \n if ok := webcam.Read(&amp;img); !ok || img.Empty() { \n log.Println(\u201cUnable to read from the webcam\u201d) continue \n }\n.\n.\n.\n}<\/code><\/pre>\n<p>\nTani duhet t\u00eb shfaqim \u043a\u0430\u0434\u0440 n\u00eb dritaren e krijuar. Ndalesa p\u00ebr kalimin n\u00eb \u043a\u0430\u0434\u0440 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 videokanalin nga kamera.<\/p>\n<p><img decoding=\"async\" alt=\"Po nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje t\u00eb fytyr\u00ebs 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\">paketa kryesore\n \nimport (\n\"log\"\n \n\"gocv.io\/x\/gocv\"\n)\n \nfunc kryesore() {\nwebcam, err := gocv.VideoCaptureDevice(0)\nif err != nil {\n    log.Fatalf(\"gabim n\u00eb hapjen e pajisjes: %v\", err)\n}\ndefer webcam.Close()\n \nimg := gocv.NewMat()\ndefer img.Close()\n \nwindow := gocv.NewWindow(\"window_webcam\")\ndefer window.Close()\n \nfor {\nif ok := webcam.Read(&amp;img); !ok || img.Empty() {\nlog.Println(\"Nuk mund t\u00eb lexojm\u00eb 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 t\u00eb p\u00ebrdorim shembullin e m\u00ebparsh\u00ebm dhe t\u00eb nd\u00ebrtojm\u00eb nj\u00eb sistem p\u00ebr njohjen e fytyrave bazuar n\u00eb Haar Cascades.<\/p>\n<p>Haar Cascades jan\u00eb klasifikues kaskad\u00eb, t\u00eb cil\u00ebt trajnohen n\u00eb baz\u00eb t\u00eb teknik\u00ebs Haar wavelets. 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 e m\u00ebposhtme.<\/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---------------------------\">Klasifikues kaskad\u00eb<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Haar-like_feature?source=post_page---------------------------\">Karakteristika Haar-like<\/a><\/noindex><\/p>\n<p>Shkarkoni klasifikuesit e st\u00ebrvitur tashm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/opencv\/opencv\/tree\/master\/data\/haarcascades?source=post_page---------------------------\">mund t\u00eb shkarkohet k\u00ebtu<\/a><\/noindex>. N\u00eb shembullin aktual, klasifikuesit do t\u00eb p\u00ebrdoren p\u00ebr identifikimin e fytyr\u00ebs s\u00eb nj\u00eb personi nga balli.<\/p>\n<p>P\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb, duhet t\u00eb krijoni nj\u00eb klasifikues dhe t'i ushqeni atij nj\u00eb skedar t\u00eb st\u00ebrvitur (linku i m\u00ebsip\u00ebrm jepet). Un\u00eb tashm\u00eb kam ngarkuar skedarin opencv_haarcascade_frontalface_default.xml n\u00eb direktoriumin ku ndodhet programi yn\u00eb.<\/p>\n<pre><code class=\"go\">harrcascade := \"opencv_haarcascade_frontalface_default.xml\"classifier := gocv.NewCascadeClassifier()classifier.Load(harrcascade)\ndefer classifier.Close()<\/code><\/pre>\n<p>\nP\u00ebr t\u00eb zbuluar fytyrat n\u00eb imazh, duhet t\u00eb p\u00ebrdorni 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 (tip Mat), i cili sapo \u00ebsht\u00eb lexuar nga video-streami i kamer\u00ebs dhe kthen nj\u00eb array t\u00eb tipit Rectangle. Madh\u00ebsia e array-t tregon numrin e fytyrave q\u00eb klasifikuesi ka arritur t\u00eb zbuloj\u00eb n\u00eb kad\u00ebr. Pastaj, p\u00ebr t'u siguruar se ne shohim at\u00eb q\u00eb ai ka gjetur, le t\u00eb kalojm\u00eb p\u00ebrmes list\u00ebs s\u00eb drejtk\u00ebnd\u00ebsh\u00ebve dhe t\u00eb nxjerrim objektin Rectangle n\u00eb konsol\u00eb, duke krijuar nj\u00eb kufi p\u00ebrreth drejtk\u00ebnd\u00ebshit t\u00eb zbuluar. Kjo mund t\u00eb b\u00ebhet me an\u00eb t\u00eb funksionit Rectangle. Ai do t\u00eb pranoj\u00eb Mat, t\u00eb lexuar nga kamera, objektin Rectangle, i cili u kthye nga metoda DetectMultiScale, ngjyr\u00ebn dhe trash\u00ebsin\u00eb p\u00ebr kufirin.<\/p>\n<pre><code class=\"go\">for _, r := range rects {\nfmt.Println(\"zbuluar\", r)\ngocv.Rectangle(&amp;img, r, color, 2)\n}<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Po nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje t\u00eb fytyr\u00ebs 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=\"Po nd\u00ebrtojm\u00eb nj\u00eb sistem njohjeje t\u00eb fytyr\u00ebs 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\">pako 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 arrit\u00ebm t\u00eb lexojm\u00eb nga pajisja\")\ncontinue\n}\n \nrects := classifier.DetectMultiScale(img)\nfor _, r := range rects {\nfmt.Println(\"e identifikuar\", 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 p\u00ebr njohjen e fytyrave, t\u00eb shkruar n\u00eb Go. S\u00eb shpejti planifikoj t\u00eb vazhdoj k\u00ebto eksperimente dhe t\u00eb krijoj gj\u00ebra t\u00eb reja interesante duke kombinuar Go dhe OpenCV.<\/p>\n<p>N\u00ebse jeni t\u00eb interesuar, ju lutem vler\u00ebsoni <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Niraj-Fonseka\/recognize?source=post_page---------------------------\">server gRPC web<\/a><\/noindex>, i cili e kam shkruar n\u00eb Python dhe OpenCV. Ai transmeton 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 programimi. Ata do t\u00eb mund t\u00eb lidhen me serverin dhe t\u00eb nxjerrin t\u00eb dh\u00ebna nga ai.<\/p>\n<p>Faleminderit q\u00eb e lexuat artikullin!<\/p>\n<blockquote><p><b>Skillbox rekomandon:<\/b><\/p>\n<ul>\n<li>Kursi 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\">\u00abProfesia Java-zhvillues\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\">\u00abZhvillues PHP 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-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"OpenCV \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430.\" \/>\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\/news\/stroim-sistemu-raspoznavaniya-lits-na-osnove-golang-i-opencv\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/news\/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 p\u00ebr njohjen e fytyrave t\u00eb bazuar n\u00eb Golang dhe OpenCV | ProHoster","description":"OpenCV \u2014 bibliotek\u00eb.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/news\/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.","og:url":"https:\/\/prohoster.info\/sq\/blog\/news\/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}]}}