{"id":30706,"date":"2025-10-01T03:01:51","date_gmt":"2025-10-01T00:01:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/"},"modified":"2025-10-01T03:01:51","modified_gmt":"2025-10-01T00:01:51","slug":"python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/","title":{"rendered":"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber"},"content":{"rendered":"<style>\n    \/* Temel Stil Ayarlar\u0131 *\/\n    body {\n        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n        line-height: 1.6;\n        color: #333;\n        max-width: 900px;\n        margin: 20px auto;\n        padding: 0 15px;\n        background-color: #f9f9f9;\n    }<\/p>\n<p>    h2 {\n        color: #2c3e50;\n        border-bottom: 2px solid #3498db;\n        padding-bottom: 10px;\n        margin-top: 40px;\n        font-size: 1.8em;\n    }<\/p>\n<p>    h3 {\n        color: #34495e;\n        margin-top: 30px;\n        font-size: 1.4em;\n    }<\/p>\n<p>    p {\n        margin-bottom: 15px;\n        text-align: justify;\n    }<\/p>\n<p>    ul, ol {\n        margin-bottom: 15px;\n        margin-left: 25px;\n    }<\/p>\n<p>    ul li, ol li {\n        margin-bottom: 8px;\n    }<\/p>\n<p>    code {\n        background-color: #eef;\n        padding: 2px 4px;\n        border-radius: 4px;\n        font-family: 'Consolas', 'Monaco', monospace;\n        color: #c7254e;\n    }<\/p>\n<p>    pre {\n        background-color: #282c34;\n        color: #abb2bf;\n        padding: 15px;\n        border-radius: 8px;\n        overflow-x: auto;\n        margin-bottom: 20px;\n        font-family: 'Consolas', 'Monaco', monospace;\n        font-size: 0.9em;\n        line-height: 1.4;\n    }<\/p>\n<p>    pre code {\n        background-color: transparent;\n        color: inherit;\n        padding: 0;\n        border-radius: 0;\n    }<\/p>\n<p>    table {\n        width: 100%;\n        border-collapse: collapse;\n        margin: 20px 0;\n    }<\/p>\n<p>    table th, table td {\n        border: 1px solid #ddd;\n        padding: 10px;\n        text-align: left;\n    }<\/p>\n<p>    table th {\n        background-color: #f2f2f2;\n        color: #555;\n    }<\/p>\n<p>    .expert-tip {\n        background-color: #ecf0f1;\n        border-left: 5px solid #3498db;\n        padding: 15px;\n        margin: 20px 0;\n        border-radius: 5px;\n        font-style: italic;\n        color: #2c3e50;\n    }<\/p>\n<p>    .info-box {\n        background-color: #d1ecf1;\n        border: 1px solid #bee5eb;\n        color: #0c5460;\n        padding: 15px;\n        margin: 20px 0;\n        border-radius: 5px;\n    }<\/p>\n<p>    \/* Mobil Uyumlu Tasar\u0131m (Media Queries) *\/\n    @media (max-width: 768px) {\n        body {\n            margin: 10px auto;\n            padding: 0 10px;\n        }<\/p>\n<p>        h2 {\n            font-size: 1.5em;\n            margin-top: 30px;\n        }<\/p>\n<p>        h3 {\n            font-size: 1.2em;\n            margin-top: 25px;\n        }<\/p>\n<p>        pre {\n            padding: 10px;\n            font-size: 0.85em;\n        }<\/p>\n<p>        table {\n            display: block;\n            overflow-x: auto;\n            white-space: nowrap;\n        }<\/p>\n<p>        table thead, table tbody, table th, table td, table tr {\n            display: block;\n        }<\/p>\n<p>        table tr {\n            margin-bottom: 10px;\n            border: 1px solid #ddd;\n        }<\/p>\n<p>        table td {\n            border: none;\n            border-bottom: 1px solid #eee;\n            position: relative;\n            padding-left: 50%;\n            text-align: right;\n        }<\/p>\n<p>        table td::before {\n            position: absolute;\n            left: 6px;\n            content: attr(data-label);\n            font-weight: bold;\n            text-align: left;\n        }\n    }<\/p>\n<p>    @media (max-width: 480px) {\n        h2 {\n            font-size: 1.3em;\n        }<\/p>\n<p>        h3 {\n            font-size: 1.1em;\n        }\n    }\n<\/style>\n<p><body><\/p>\n<p>Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc temellerinden ileri d\u00fczey optimizasyonlara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi sanal farenizi olu\u015fturun ve etkile\u015fimin gelece\u011fine ad\u0131m at\u0131n!<\/p>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, bilgisayarlarla etkile\u015fim y\u00f6ntemlerimiz s\u00fcrekli geli\u015fiyor. Geleneksel klavye ve fare ikilisi, her ne kadar verimli olsa da, baz\u0131 durumlarda yetersiz kalabiliyor veya yeni nesil kullan\u0131c\u0131 deneyimlerini k\u0131s\u0131tlayabiliyor. \u0130\u015fte bu noktada el hareketiyle fare kontrol\u00fc, yeni ufuklar a\u00e7an, son derece yenilik\u00e7i bir alternatif olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Peki, el hareketleriyle bilgisayar\u0131m\u0131z\u0131 kontrol etmek neden bu kadar b\u00fcy\u00fck bir potansiyele sahip?<\/p>\n<p>\u00d6ncelikle, eri\u015filebilirlik a\u00e7\u0131s\u0131ndan bu teknolojinin sundu\u011fu faydalar g\u00f6z ard\u0131 edilemez. Fiziksel engelleri olan bireyler i\u00e7in, standart bir fare kullanmak zorlu hatta imkans\u0131z olabilir. El hareketleri ile kontrol, bu ki\u015filerin bilgisayar eri\u015fimini kolayla\u015ft\u0131rarak onlara daha ba\u011f\u0131ms\u0131z bir deneyim sunar. Bir kamera ve basit jestlerle t\u00fcm bilgisayar\u0131 y\u00f6netmek, ya\u015fam kalitelerini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Ayr\u0131ca, uzun s\u00fcreli fare kullan\u0131m\u0131ndan kaynaklanan bilek a\u011fr\u0131s\u0131 veya karpal t\u00fcnel sendromu gibi sa\u011fl\u0131k sorunlar\u0131 ya\u015fayanlar i\u00e7in de ergonomik bir \u00e7\u00f6z\u00fcm sunabilir. Bu, yaln\u0131zca bir konfor meselesi de\u011fil, ayn\u0131 zamanda sa\u011fl\u0131\u011f\u0131 destekleyici bir yakla\u015f\u0131md\u0131r.<\/p>\n<p>\u0130kinci olarak, sunumlar ve e\u011fitim ortamlar\u0131 gibi senaryolarda el hareketiyle fare kontrol\u00fc, etkile\u015fimi \u00e7ok daha dinamik hale getirir. Bir sunum yaparken, klavye veya fareye ba\u011fl\u0131 kalmadan sahnenin ortas\u0131nda serbest\u00e7e dola\u015farak slaytlar\u0131 de\u011fi\u015ftirmek, i\u00e7erikleri vurgulamak veya sanal bir i\u015faretleyici kullanmak m\u00fcmk\u00fcnd\u00fcr. Bu, dinleyicilerle daha do\u011fal ve ak\u0131c\u0131 bir ba\u011flant\u0131 kurmay\u0131 sa\u011flar. E\u011fitimde ise, \u00f6\u011frencilerin interaktif panolar veya sanal nesnelerle do\u011frudan el hareketleriyle etkile\u015fime girmesi, \u00f6\u011frenme s\u00fcrecini daha ilgi \u00e7ekici ve ak\u0131lda kal\u0131c\u0131 k\u0131labilir. \u00d6zellikle uzaktan e\u011fitim platformlar\u0131nda, bu t\u00fcr bir etkile\u015fim, fiziksel s\u0131n\u0131f ortam\u0131n\u0131n dinamizmini bir nebze de olsa dijital ortama ta\u015f\u0131yabilir.<\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fcs\u00fc, sanal ve art\u0131r\u0131lm\u0131\u015f ger\u00e7eklik (VR\/AR) teknolojilerinin y\u00fckseli\u015fiyle birlikte, do\u011fal kullan\u0131c\u0131 aray\u00fczlerine olan ihtiya\u00e7 giderek art\u0131yor. Geleneksel denetleyiciler, bu s\u00fcr\u00fckleyici deneyimlerde \u00e7o\u011fu zaman &#8220;ger\u00e7eklik hissini&#8221; bozabilir. El hareketleriyle kontrol, VR\/AR ortamlar\u0131nda nesnelerle etkile\u015fime girmek, men\u00fclerde gezinmek veya karakterleri y\u00f6nlendirmek i\u00e7in \u00e7ok daha sezgisel ve do\u011fal bir y\u00f6ntem sunar. Bu, sanal d\u00fcnyalarla olan ba\u011f\u0131m\u0131z\u0131 g\u00fc\u00e7lendirir ve deneyimi daha da s\u00fcr\u00fckleyici hale getirir. Son olarak, ev otomasyonu ve ak\u0131ll\u0131 ev sistemlerinde de el hareketleri, \u0131\u015f\u0131klar\u0131 a\u00e7\u0131p kapama, termostat\u0131 ayarlama veya medya oynat\u0131c\u0131y\u0131 kontrol etme gibi g\u00fcnl\u00fck g\u00f6revleri kolayla\u015ft\u0131rmak i\u00e7in kullan\u0131labilir. G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere, el hareketiyle fare kontrol\u00fc sadece bir teknolojik yenilik olmaktan \u00f6te, hayat\u0131m\u0131z\u0131n bir\u00e7ok alan\u0131nda bize daha do\u011fal, eri\u015filebilir ve etkile\u015fimli bir d\u00fcnya vaat ediyor.<\/p>\n<h3>Temel Kavramlar: Bilgisayar G\u00f6r\u00fc\u015f\u00fc ve Hareket Alg\u0131lama Nedir?<\/h3>\n<p>El hareketiyle fare kontrol\u00fc gibi sistemler in\u015fa etmek istedi\u011fimizde, bilgisayar g\u00f6r\u00fc\u015f\u00fc ve hareket alg\u0131lama gibi temel kavramlar\u0131 anlamak hayati \u00f6nem ta\u015f\u0131r. Bu teknolojilerin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kavrad\u0131\u011f\u0131m\u0131zda, projemizin mant\u0131ksal temelini \u00e7ok daha sa\u011flam bir \u015fekilde oturtmu\u015f oluruz. Peki, bu kavramlar asl\u0131nda ne anlama geliyor?<\/p>\n<p><strong>Bilgisayar G\u00f6r\u00fc\u015f\u00fc (Computer Vision)<\/strong> en basit tabiriyle, bilgisayarlar\u0131n dijital g\u00f6r\u00fcnt\u00fclerden veya videolardan anlaml\u0131 bilgiler \u00e7\u0131karmas\u0131n\u0131 sa\u011flayan bir yapay zeka alan\u0131d\u0131r. T\u0131pk\u0131 insan g\u00f6z\u00fc ve beyni gibi, bilgisayarlar\u0131n da g\u00f6rd\u00fcklerini yorumlamas\u0131n\u0131 ve anlamas\u0131n\u0131 hedefler. Bu, bir foto\u011fraftaki nesneleri tan\u0131maktan, bir videodaki hareketleri izlemeye kadar geni\u015f bir yelpazeyi kapsar. Bilgisayar g\u00f6r\u00fc\u015f\u00fc, piksellerden olu\u015fan ham veriyi al\u0131p, bu veriyi i\u015fleyerek \u015fekiller, renkler, desenler ve hatta derinlik gibi \u00f6zellikleri analiz eder. \u00d6rne\u011fin, bir insan y\u00fcz\u00fcn\u00fc tan\u0131mak, bir araban\u0131n plaketini okumak veya bir fabrikan\u0131n \u00fcretim hatt\u0131nda hata tespiti yapmak gibi g\u00f6revler bilgisayar g\u00f6r\u00fc\u015f\u00fcn\u00fcn uygulama alanlar\u0131ndand\u0131r. El hareketiyle fare kontrol\u00fc ba\u011flam\u0131nda ise, bilgisayar g\u00f6r\u00fc\u015f\u00fc kameradan gelen g\u00f6r\u00fcnt\u00fc ak\u0131\u015f\u0131n\u0131 analiz ederek bir elin varl\u0131\u011f\u0131n\u0131, konumunu ve parmaklar\u0131n duru\u015funu tespit etmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>Hareket Alg\u0131lama (Motion Detection)<\/strong> ise, bilgisayar g\u00f6r\u00fc\u015f\u00fcn\u00fcn daha spesifik bir alt dal\u0131d\u0131r ve g\u00f6r\u00fcnt\u00fclerdeki veya video ak\u0131\u015f\u0131ndaki de\u011fi\u015fiklikleri tespit etmeye odaklan\u0131r. Yani, bir nesnenin konumunun zaman i\u00e7inde nas\u0131l de\u011fi\u015fti\u011fini izlemektir. Temelde, iki ard\u0131\u015f\u0131k g\u00f6r\u00fcnt\u00fc karesi aras\u0131ndaki farklar\u0131 analiz ederek bir hareketin olup olmad\u0131\u011f\u0131n\u0131 belirler. E\u011fer iki kare aras\u0131nda yeterince b\u00fcy\u00fck bir piksel fark\u0131 varsa, bu bir hareketin g\u00f6stergesi olarak kabul edilir. G\u00fcvenlik kameralar\u0131, insans\u0131z hava ara\u00e7lar\u0131 (drone&#8217;lar) veya spor analiz sistemleri gibi bir\u00e7ok alanda hareket alg\u0131lama teknolojisi kullan\u0131l\u0131r. Bizim projemizde ise, elin hareketlerini izleyerek fare imlecinin ekranda nas\u0131l hareket etmesi gerekti\u011fini belirlemek i\u00e7in hareket alg\u0131lama prensiplerinden faydalanaca\u011f\u0131z. Parma\u011f\u0131n ucunun belirli bir y\u00f6ne kaymas\u0131, imlecin de o y\u00f6ne do\u011fru hareket etmesini sa\u011flayacak bir hareket olarak alg\u0131lanacakt\u0131r.<\/p>\n<p>Bu iki kavram bir araya geldi\u011finde, kameradan al\u0131nan g\u00f6r\u00fcnt\u00fcler \u00fczerinde \u00f6nce el tespiti ve parmaklar\u0131n izlenmesi gibi bilgisayar g\u00f6r\u00fc\u015f\u00fc g\u00f6revleri yerine getirilir. Ard\u0131ndan, bu el ve parmak konumlar\u0131ndaki zamansal de\u011fi\u015fiklikler hareket alg\u0131lama teknikleriyle analiz edilerek, farenin hangi eylemleri ger\u00e7ekle\u015ftirece\u011fi (hareket, t\u0131klama, s\u00fcr\u00fckleme vb.) belirlenir. Bu s\u00fcre\u00e7, olduk\u00e7a karma\u015f\u0131k matematiksel algoritmalar ve istatistiksel modeller i\u00e7erse de, modern k\u00fct\u00fcphaneler (t\u0131pk\u0131 MediaPipe gibi) sayesinde biz geli\u015ftiricilerin i\u015fi b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015fm\u0131\u015ft\u0131r. Art\u0131k bu derin teknik detaylara inmeden, y\u00fcksek seviyeli ara\u00e7larla bu t\u00fcr sistemleri h\u0131zl\u0131ca prototipleme imkan\u0131na sahibiz. Bu temel bilgiyi edinmek, projemizin ad\u0131mlar\u0131n\u0131 daha bilin\u00e7li ve sa\u011flam bir \u015fekilde atmam\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h2>Gerekli Ara\u00e7lar ve K\u00fct\u00fcphaneler: Nelerle Ba\u015flayaca\u011f\u0131z?<\/h2>\n<p>Herhangi bir Python projesine ba\u015flarken, do\u011fru ara\u00e7lar\u0131 ve k\u00fct\u00fcphaneleri se\u00e7mek, projenin ba\u015far\u0131s\u0131 ve geli\u015ftirme s\u00fcrecinin verimlili\u011fi a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. El hareketiyle fare kontrol\u00fc projemiz i\u00e7in de, bu alanda kendini kan\u0131tlam\u0131\u015f, g\u00fc\u00e7l\u00fc ve kullan\u0131m\u0131 nispeten kolay birka\u00e7 temel araca ihtiyac\u0131m\u0131z olacak. \u0130\u015fte projemizin iskeletini olu\u015fturacak bu ara\u00e7lar ve k\u00fct\u00fcphaneler:<\/p>\n<ol>\n<li>\n            <strong>Python Programlama Dili:<\/strong><\/p>\n<p>Projemizin temelini olu\u015fturan dil Python olacak. Python, basit s\u00f6zdizimi, geni\u015f k\u00fct\u00fcphane ekosistemi ve okunakl\u0131 yap\u0131s\u0131yla h\u0131zl\u0131 prototipleme ve bilimsel hesaplamalar i\u00e7in ideal bir se\u00e7imdir. E\u011fer bilgisayar\u0131n\u0131zda Python y\u00fckl\u00fc de\u011filse, resmi <a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_blank\">Python web sitesinden<\/a> en son kararl\u0131 s\u00fcr\u00fcm\u00fc (tercihen Python 3.8 veya \u00fczeri) indirebilir ve kurabilirsiniz. Kurulum s\u0131ras\u0131nda PATH de\u011fi\u015fkenine Python&#8217;\u0131 ekledi\u011finizden emin olun.<\/p>\n<\/li>\n<li>\n            <strong>OpenCV (Open Source Computer Vision Library):<\/strong><\/p>\n<p>Bilgisayar g\u00f6r\u00fc\u015f\u00fc alan\u0131nda de-facto standart olan OpenCV, g\u00f6r\u00fcnt\u00fc ve video i\u015fleme i\u00e7in y\u00fczlerce optimize edilmi\u015f algoritma sunar. Kameradan g\u00f6r\u00fcnt\u00fc ak\u0131\u015f\u0131 almak, bu g\u00f6r\u00fcnt\u00fcleri i\u015flemek ve ekranda g\u00f6stermek gibi temel g\u00f6rsel g\u00f6revler i\u00e7in OpenCV&#8217;yi kullanaca\u011f\u0131z. El izleme algoritmalar\u0131 genellikle bu k\u00fct\u00fcphaneden al\u0131nan video kareleri \u00fczerinde \u00e7al\u0131\u015f\u0131r. OpenCV&#8217;nin sa\u011flad\u0131\u011f\u0131 y\u00fcksek performans ve geni\u015f fonksiyon seti, bu t\u00fcr projeler i\u00e7in vazge\u00e7ilmezdir. Kurulumu olduk\u00e7a basittir:<\/p>\n<pre><code>\npip install opencv-python\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li>\n            <strong>MediaPipe:<\/strong><\/p>\n<p>Google taraf\u0131ndan geli\u015ftirilen MediaPipe, makine \u00f6\u011frenimi tabanl\u0131 \u00e7\u00f6z\u00fcmlerin platformlar aras\u0131 uygulanmas\u0131na olanak tan\u0131yan bir \u00e7er\u00e7evedir. El izleme (Hand Tracking), y\u00fcz tan\u0131ma (Face Detection) gibi karma\u015f\u0131k bilgisayar g\u00f6r\u00fc\u015f\u00fc g\u00f6revlerini, \u00f6nceden e\u011fitilmi\u015f modellerle kolayca ger\u00e7ekle\u015ftirmemizi sa\u011flar. Projemizde, MediaPipe'in el izleme mod\u00fcl\u00fcn\u00fc kullanarak bir elin ekrandaki 21 farkl\u0131 anahtar noktas\u0131n\u0131 (parmak u\u00e7lar\u0131, eklemler, avu\u00e7 i\u00e7i vb.) hassas bir \u015fekilde tespit edece\u011fiz. Bu, bizim i\u00e7in el hareketlerini tan\u0131mak ad\u0131na olduk\u00e7a detayl\u0131 veriler sa\u011flayacakt\u0131r. Kurulumu da t\u0131pk\u0131 OpenCV gibi kolayd\u0131r:<\/p>\n<pre><code>\npip install mediapipe\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li>\n            <strong>PyAutoGUI:<\/strong><\/p>\n<p>Fare imlecini programatik olarak kontrol etmek, t\u0131klama veya s\u00fcr\u00fckleme gibi fare eylemlerini taklit etmek i\u00e7in PyAutoGUI k\u00fct\u00fcphanesini kullanaca\u011f\u0131z. Bu k\u00fct\u00fcphane, klavye ve fareyi sim\u00fcle ederek i\u015fletim sistemi d\u00fczeyinde otomasyon sa\u011flar. El hareketlerinden elde etti\u011fimiz verileri, PyAutoGUI arac\u0131l\u0131\u011f\u0131yla ger\u00e7ek fare hareketlerine d\u00f6n\u00fc\u015ft\u00fcrece\u011fiz. Bu k\u00fct\u00fcphane, kullan\u0131c\u0131n\u0131n fare imlecini ekranda hareket ettirme ve t\u0131klama ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131layacakt\u0131r. Kurulumu a\u015fa\u011f\u0131daki gibidir:<\/p>\n<pre><code>\npip install pyautogui\n            <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">\n                Uzman \u0130pucu: PyAutoGUI kullan\u0131rken dikkatli olun! Kontrols\u00fcz veya sonsuz d\u00f6ng\u00fcde \u00e7al\u0131\u015fan kodlar fare ve klavyenizi kilitleyebilir. Geli\u015ftirme a\u015famas\u0131nda her zaman bir \"kill switch\" (\u00f6rn. k\u00f6\u015feye fareyi g\u00f6t\u00fcrmek veya belirli bir tu\u015fa basmak) veya acil durdurma mekanizmas\u0131 bulundurun.\n            <\/div>\n<\/li>\n<li>\n            <strong>NumPy (Opsiyonel ama Tavsiye Edilir):<\/strong><\/p>\n<p>Say\u0131sal i\u015flemler ve matris manip\u00fclasyonlar\u0131 i\u00e7in NumPy, Python'da standart haline gelmi\u015ftir. G\u00f6r\u00fcnt\u00fc i\u015fleme s\u0131ras\u0131nda veya el noktalar\u0131n\u0131n koordinatlar\u0131n\u0131 analiz ederken matematiksel hesaplamalar yapmam\u0131z gerekebilir. OpenCV ve MediaPipe ile \u00e7o\u011fu i\u015fi halletsek de, daha karma\u015f\u0131k veri analizleri i\u00e7in NumPy'yi kullanmak faydal\u0131 olabilir. \u00c7o\u011fu zaman di\u011fer k\u00fct\u00fcphanelerle birlikte otomatik olarak gelir, ancak yine de y\u00fcklemek isteyebilirsiniz:<\/p>\n<pre><code>\npip install numpy\n            <\/pre>\n<p><\/code>\n        <\/li>\n<\/ol>\n<p>Bu k\u00fct\u00fcphaneleri sisteminize kurduktan sonra, art\u0131k kod yazmaya ve el hareketiyle fare kontrol\u00f6r\u00fcn\u00fcz\u00fc ad\u0131m ad\u0131m in\u015fa etmeye haz\u0131rs\u0131n\u0131z. Her bir k\u00fct\u00fcphane, projemizin farkl\u0131 bir katman\u0131n\u0131 olu\u015fturacak ve bir araya geldiklerinde g\u00fc\u00e7l\u00fc bir sistem ortaya \u00e7\u0131karacakt\u0131r. Haz\u0131rl\u0131k a\u015famas\u0131n\u0131 tamamlamak, sorunsuz bir geli\u015ftirme s\u00fcreci i\u00e7in temel ad\u0131md\u0131r.<\/p>\n<h3>Ad\u0131m Ad\u0131m Kurulum ve \u0130lk \u00c7al\u0131\u015ft\u0131rma: Python Projenizi Haz\u0131rlay\u0131n<\/h3>\n<p>Art\u0131k gerekli t\u00fcm k\u00fct\u00fcphaneleri sistemimize kurdu\u011fumuza g\u00f6re, ilk Python kodumuzu yazmaya ve projemizin temelini atmaya ba\u015flayabiliriz. Bu ad\u0131mda, kameradan g\u00f6r\u00fcnt\u00fc ak\u0131\u015f\u0131 almay\u0131, MediaPipe kullanarak elimizi tespit etmeyi ve tespit edilen anahtar noktalar\u0131 ekranda g\u00f6stermeyi hedefleyece\u011fiz. Bu sayede, sistemimizin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 g\u00f6rsel olarak do\u011frulayabilece\u011fiz.<\/p>\n<h4>1. Ad\u0131m: Temel K\u00fct\u00fcphaneleri \u0130\u00e7e Aktarma ve Kamera Eri\u015fimi<\/h4>\n<p>\u0130lk olarak, projemiz i\u00e7in gerekli olan k\u00fct\u00fcphaneleri Python dosyam\u0131z\u0131n en ba\u015f\u0131na i\u00e7e aktarmam\u0131z gerekiyor. Ard\u0131ndan, bilgisayar\u0131m\u0131z\u0131n varsay\u0131lan kameras\u0131na eri\u015fmek i\u00e7in OpenCV'yi kullanaca\u011f\u0131z. Bir video yakalama nesnesi olu\u015fturup, kameran\u0131n a\u00e7\u0131l\u0131p a\u00e7\u0131lmad\u0131\u011f\u0131n\u0131 kontrol etmek iyi bir pratiktir.<\/p>\n<pre><code>\nimport cv2\nimport mediapipe as mp\nimport time # FPS hesaplamak i\u00e7in kullanabiliriz (opsiyonel)\n\n# MediaPipe el izleme mod\u00fcl\u00fcn\u00fc ba\u015flatma\nmp_hands = mp.solutions.hands\nhands = mp_hands.Hands(min_detection_confidence=0.7, min_tracking_confidence=0.7)\nmp_draw = mp.solutions.drawing_utils # El noktalar\u0131n\u0131 ve ba\u011flant\u0131lar\u0131n\u0131 \u00e7izmek i\u00e7in\n\n# Kameray\u0131 ba\u015flatma\ncap = cv2.VideoCapture(0) # 0, genellikle varsay\u0131lan kameray\u0131 temsil eder\n\nif not cap.isOpened():\n    print(\"Kamera a\u00e7\u0131lamad\u0131. L\u00fctfen kameran\u0131n ba\u011fl\u0131 oldu\u011fundan ve ba\u015fka bir uygulama taraf\u0131ndan kullan\u0131lmad\u0131\u011f\u0131ndan emin olun.\")\n    exit()\n\n# FPS hesaplamas\u0131 i\u00e7in de\u011fi\u015fkenler (opsiyonel)\npTime = 0\ncTime = 0\n    <\/pre>\n<p><\/code><\/p>\n<h4>2. Ad\u0131m: G\u00f6r\u00fcnt\u00fc Ak\u0131\u015f\u0131n\u0131 \u0130\u015fleme ve El Tespiti<\/h4>\n<p>Kamera a\u00e7\u0131ld\u0131ktan sonra, s\u00fcrekli olarak kareler almam\u0131z ve her bir kare \u00fczerinde MediaPipe ile el tespiti yapmam\u0131z gerekecek. Bu i\u015flem bir <code>while<\/code> d\u00f6ng\u00fcs\u00fc i\u00e7inde ger\u00e7ekle\u015ftirilir. OpenCV, BGR format\u0131nda g\u00f6r\u00fcnt\u00fcler sa\u011flarken, MediaPipe RGB format\u0131nda g\u00f6r\u00fcnt\u00fcler bekler. Bu nedenle, renk format\u0131n\u0131 d\u00f6n\u00fc\u015ft\u00fcrmemiz \u00f6nemlidir.<\/p>\n<pre><code>\nwhile True:\n    success, img = cap.read()\n    if not success:\n        print(\"Kamera ak\u0131\u015f\u0131ndan kare okunamad\u0131.\")\n        break\n\n    # MediaPipe'in daha iyi \u00e7al\u0131\u015fmas\u0131 i\u00e7in g\u00f6r\u00fcnt\u00fcy\u00fc yatay \u00e7eviriyoruz (ayna efekti)\n    img = cv2.flip(img, 1)\n\n    # MediaPipe'in bekledi\u011fi RGB format\u0131na d\u00f6n\u00fc\u015ft\u00fcrme\n    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n\n    # El tespiti ve izleme\n    results = hands.process(imgRGB)\n\n    # El noktalar\u0131 tespit edildiyse\n    if results.multi_hand_landmarks:\n        for handLms in results.multi_hand_landmarks:\n            # Her bir eldeki 21 anahtar noktas\u0131n\u0131 \u00e7iz\n            mp_draw.draw_landmarks(img, handLms, mp_hands.HAND_CONNECTIONS)\n\n            # Her bir noktan\u0131n koordinatlar\u0131n\u0131 almak i\u00e7in\n            for id, lm in enumerate(handLms.landmark):\n                h, w, c = img.shape\n                cx, cy = int(lm.x * w), int(lm.y * h)\n                # \u0130ste\u011fe ba\u011fl\u0131: Parmak u\u00e7lar\u0131n\u0131 daire ile i\u015faretleyebiliriz\n                # if id == 8: # \u0130\u015faret parma\u011f\u0131 ucu\n                #     cv2.circle(img, (cx, cy), 15, (255, 0, 255), cv2.FILLED)\n                # print(f\"Parmak Noktas\u0131 {id}: ({cx}, {cy})\") # Konsola yazd\u0131rmak isterseniz\n\n    # FPS Hesaplama ve G\u00f6r\u00fcnt\u00fcleme (opsiyonel)\n    cTime = time.time()\n    fps = 1 \/ (cTime - pTime)\n    pTime = cTime\n    cv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 255), 3)\n\n    # \u0130\u015flenmi\u015f g\u00f6r\u00fcnt\u00fcy\u00fc g\u00f6sterme\n    cv2.imshow(\"El Hareketi Kontrolu\", img)\n\n    # 'q' tu\u015funa bas\u0131ld\u0131\u011f\u0131nda d\u00f6ng\u00fcden \u00e7\u0131k\n    if cv2.waitKey(1) & 0xFF == ord('q'):\n        break\n\n# Kaynaklar\u0131 serbest b\u0131rakma\ncap.release()\ncv2.destroyAllWindows()\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"info-box\">\n        Bilgi Notu: <code>cv2.flip(img, 1)<\/code> sat\u0131r\u0131, g\u00f6r\u00fcnt\u00fcy\u00fc yatay eksende \u00e7evirerek ayna efekti yarat\u0131r. Bu, kullan\u0131c\u0131n\u0131n kendi elini ekranda g\u00f6rd\u00fc\u011f\u00fc gibi kontrol etmesini kolayla\u015ft\u0131r\u0131r ve daha do\u011fal bir deneyim sunar.\n    <\/div>\n<p>Bu kodu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, bilgisayar\u0131n\u0131z\u0131n kameras\u0131n\u0131 kullanarak kendi elinizi ekranda takip etti\u011fini ve elinizin anahtar noktalar\u0131n\u0131 bir iskelet yap\u0131s\u0131 gibi \u00e7izdi\u011fini g\u00f6rmelisiniz. Bu, sistemimizin temel ta\u015flar\u0131n\u0131 ba\u015far\u0131yla kurdu\u011funuz ve el izleme i\u015flevinin do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir. Art\u0131k, bu el noktas\u0131 verilerini kullanarak fare hareketlerini ve t\u0131klamalar\u0131n\u0131 programlamaya ge\u00e7ebiliriz.<\/p>\n<h2>El \u0130zleme ve Parmak Tan\u0131ma: MediaPipe ile Sihri Ger\u00e7ekle\u015ftirme<\/h2>\n<p>El izleme ve parmak tan\u0131ma, projemizin kalbinde yer al\u0131yor. MediaPipe'in bu alandaki g\u00fcc\u00fc sayesinde, kamera g\u00f6r\u00fcnt\u00fcs\u00fcndeki bir elin 21 farkl\u0131 \u00f6nemli noktas\u0131n\u0131 (landmark) milisaniyeler i\u00e7inde tespit edebiliyoruz. Bu noktalar, parmak u\u00e7lar\u0131ndan avu\u00e7 i\u00e7ine kadar her ayr\u0131nt\u0131y\u0131 i\u00e7erir ve bize elin duru\u015fu, a\u00e7\u0131s\u0131 ve pozisyonu hakk\u0131nda zengin bilgiler sunar. Bu bilgiyi kullanarak, farkl\u0131 el jestlerini tan\u0131mlayabilir ve bunlar\u0131 fare eylemleriyle ili\u015fkilendirebiliriz.<\/p>\n<p>MediaPipe'ten ald\u0131\u011f\u0131m\u0131z her bir anahtar nokta (landmark), g\u00f6r\u00fcnt\u00fcn\u00fcn geni\u015fli\u011fi ve y\u00fcksekli\u011fine oranla normalle\u015ftirilmi\u015f (0 ile 1 aras\u0131nda) X, Y ve Z koordinatlar\u0131n\u0131 i\u00e7erir. X ve Y ekran koordinatlar\u0131m\u0131z\u0131 temsil ederken, Z koordinat\u0131 derinlik bilgisini verir. Bizim i\u00e7in fare kontrol\u00fcnde \u00f6ncelikli olarak X ve Y koordinatlar\u0131 \u00f6nemli olacakt\u0131r. Parmaklar\u0131n durumunu anlamak i\u00e7in, belirli parmak noktalar\u0131 aras\u0131ndaki mesafeleri veya a\u00e7\u0131lar\u0131 analiz etmemiz gerekir.<\/p>\n<table>\n<thead>\n<tr>\n<th>Parmak<\/th>\n<th>Landmark ID'leri<\/th>\n<th>\u00d6nemli Noktalar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-label=\"Parmak\">Ba\u015fparmak<\/td>\n<td data-label=\"Landmark ID'leri\">1, 2, 3, 4<\/td>\n<td data-label=\"\u00d6nemli Noktalar\">Avu\u00e7 i\u00e7i taban\u0131, eklemler, u\u00e7<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parmak\">\u0130\u015faret Parma\u011f\u0131<\/td>\n<td data-label=\"Landmark ID'leri\">5, 6, 7, 8<\/td>\n<td data-label=\"\u00d6nemli Noktalar\">Avu\u00e7 i\u00e7i taban\u0131, eklemler, u\u00e7<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parmak\">Orta Parmak<\/td>\n<td data-label=\"Landmark ID'leri\">9, 10, 11, 12<\/td>\n<td data-label=\"\u00d6nemli Noktalar\">Avu\u00e7 i\u00e7i taban\u0131, eklemler, u\u00e7<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parmak\">Y\u00fcz\u00fck Parma\u011f\u0131<\/td>\n<td data-label=\"Landmark ID'leri\">13, 14, 15, 16<\/td>\n<td data-label=\"\u00d6nemli Noktalar\">Avu\u00e7 i\u00e7i taban\u0131, eklemler, u\u00e7<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Parmak\">Ser\u00e7e Parmak<\/td>\n<td data-label=\"Landmark ID'leri\">17, 18, 19, 20<\/td>\n<td data-label=\"\u00d6nemli Noktalar\">Avu\u00e7 i\u00e7i taban\u0131, eklemler, u\u00e7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u00d6rne\u011fin, i\u015faret parma\u011f\u0131n\u0131n ucunu (ID 8) ve ba\u015fparma\u011f\u0131n ucunu (ID 4) kullanarak bir \"tutma\" veya \"s\u0131k\u0131\u015ft\u0131rma\" (pinch) jestini alg\u0131layabiliriz. Bu iki nokta aras\u0131ndaki \u00d6klid mesafesi belirli bir e\u015fi\u011fin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde, bir t\u0131klama eylemi tetiklenebilir. Benzer \u015fekilde, sadece i\u015faret parma\u011f\u0131n\u0131 uzat\u0131p di\u011fer parmaklar\u0131 kapal\u0131 tutarak fare imlecini kontrol edebiliriz. Bu, temel mant\u0131\u011f\u0131m\u0131z\u0131 olu\u015fturacak.<\/p>\n<h3>Fare Hareketlerini Kodlama: \u0130mleci Nas\u0131l Kontrol Edece\u011fiz?<\/h3>\n<p>Fare imlecini kontrol etmek i\u00e7in, i\u015faret parma\u011f\u0131m\u0131z\u0131n ucunun (landmark ID 8) ekran \u00fczerindeki konumunu kullanaca\u011f\u0131z. Kameradan gelen g\u00f6r\u00fcnt\u00fcde bu noktan\u0131n piksel koordinatlar\u0131n\u0131 al\u0131p, bu koordinatlar\u0131 bilgisayar ekran\u0131n\u0131n boyutlar\u0131na \u00f6l\u00e7eklendirmemiz gerekecek. \u00c7\u00fcnk\u00fc kameran\u0131n \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc ile monit\u00f6r\u00fcn \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc farkl\u0131 olabilir.<\/p>\n<pre><code>\n# ... (\u00f6nceki koddan devam) ...\nimport pyautogui\n\n# Ekran boyutlar\u0131n\u0131 al\nscreen_width, screen_height = pyautogui.size()\n\n# Fare hareket alan\u0131 i\u00e7in bir \u00e7er\u00e7eve (daha yumu\u015fak hareket i\u00e7in)\nframe_reduction = 100 # Ekran\u0131n kenarlar\u0131ndan b\u0131rak\u0131lacak bo\u015fluk\nsmoothening = 7 # Fare hareketini yumu\u015fatma fakt\u00f6r\u00fc\n\n# Ba\u015flang\u0131\u00e7ta fare konumunu ayarla\nplocX, plocY = 0, 0 # \u00d6nceki konum\nclocX, clocY = 0, 0 # Mevcut konum\n\nwhile True:\n    success, img = cap.read()\n    if not success:\n        break\n\n    img = cv2.flip(img, 1)\n    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n    results = hands.process(imgRGB)\n\n    if results.multi_hand_landmarks:\n        for handLms in results.multi_hand_landmarks:\n            # \u0130\u015faret parma\u011f\u0131 ucu (landmark 8) ve orta parmak ucu (landmark 12)\n            lmList = []\n            for id, lm in enumerate(handLms.landmark):\n                h, w, c = img.shape\n                cx, cy = int(lm.x * w), int(lm.y * h)\n                lmList.append([id, cx, cy])\n                # Parmak u\u00e7lar\u0131n\u0131 g\u00f6rselle\u015ftirme\n                # if id == 8 or id == 12:\n                #     cv2.circle(img, (cx, cy), 10, (255, 0, 255), cv2.FILLED)\n\n            if len(lmList) != 0:\n                x1, y1 = lmList[8][1:] # \u0130\u015faret parma\u011f\u0131 ucu\n                x2, y2 = lmList[12][1:] # Orta parmak ucu\n\n                # Fare hareket alan\u0131 i\u00e7in dikd\u00f6rtgen \u00e7izimi (g\u00f6rsel feedback)\n                cv2.rectangle(img, (frame_reduction, frame_reduction),\n                              (w - frame_reduction, h - frame_reduction),\n                              (255, 0, 255), 2)\n\n                # Sadece i\u015faret parma\u011f\u0131 hareketli mi kontrol\u00fc\n                # \u0130\u015faret parma\u011f\u0131 ucunun Y koordinat\u0131n\u0131n orta parmak ucunun Y koordinat\u0131ndan y\u00fcksek olup olmad\u0131\u011f\u0131n\u0131 kontrol et\n                # Yani i\u015faret parma\u011f\u0131 yukar\u0131da ve orta parmak a\u015fa\u011f\u0131da (genellikle kapal\u0131) ise\n                fingers = []\n                # Ba\u015fparmak kontrol\u00fc (x pozisyonu)\n                if lmList[4][1] > lmList[3][1]: # Sa\u011f el i\u00e7in (sol el ise tersi)\n                    fingers.append(1)\n                else:\n                    fingers.append(0)\n\n                # Di\u011fer 4 parmak i\u00e7in (y pozisyonu)\n                for id in [8, 12, 16, 20]:\n                    if lmList[id][2] < lmList[id - 2][2]: # Parmak ucu, parmak bo\u011fumundan yukar\u0131da ise a\u00e7\u0131k\n                        fingers.append(1)\n                    else:\n                        fingers.append(0)\n\n                totalFingers = fingers.count(1)\n\n                # Sadece i\u015faret parma\u011f\u0131 a\u00e7\u0131k oldu\u011funda imleci hareket ettir\n                if totalFingers == 1 and fingers[1] == 1: # Sadece i\u015faret parma\u011f\u0131 a\u00e7\u0131k\n                    # Koordinatlar\u0131 ekrana oranla \u00f6l\u00e7eklendir\n                    # Kamera frame'ini monit\u00f6r \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcne e\u015fle\n                    x3 = int(pyautogui.mapRange(x1, frame_reduction, w - frame_reduction, 0, screen_width))\n                    y3 = int(pyautogui.mapRange(y1, frame_reduction, h - frame_reduction, 0, screen_height))\n\n                    # Hareketleri yumu\u015fatma\n                    clocX = plocX + (x3 - plocX) \/ smoothening\n                    clocY = plocY + (y3 - plocY) \/ smoothening\n\n                    # Fareyi hareket ettir\n                    pyautogui.moveTo(clocX, clocY)\n                    plocX, plocY = clocX, clocY\n\n                    # G\u00f6rsel geri bildirim (imle\u00e7 noktas\u0131)\n                    cv2.circle(img, (x1, y1), 15, (0, 255, 0), cv2.FILLED)\n\n\n    # ... (FPS ve imshow, waitKey kodlar\u0131) ...\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: <code>pyautogui.mapRange<\/code> fonksiyonu, bir aral\u0131ktaki de\u011feri ba\u015fka bir aral\u0131\u011fa e\u015flemek i\u00e7in idealdir. \u00d6rne\u011fin, kameran\u0131n g\u00f6r\u00fcnt\u00fc alan\u0131ndaki i\u015faret parma\u011f\u0131 koordinatlar\u0131n\u0131 (\u00f6rne\u011fin 0-640 piksel) ekran\u0131n\u0131z\u0131n \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcne (\u00f6rne\u011fin 0-1920 piksel) d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in kullan\u0131labilir. Bu, hassas kontrol sa\u011flar.\n    <\/div>\n<p>Bu kod par\u00e7as\u0131, i\u015faret parma\u011f\u0131n\u0131z\u0131n ekrandaki hareketini takip edecek ve fare imlecini o konuma ta\u015f\u0131yacakt\u0131r. <code>frame_reduction<\/code> ve <code>smoothening<\/code> de\u011ferleri, fare hareketinin hassasiyetini ve ak\u0131c\u0131l\u0131\u011f\u0131n\u0131 ayarlaman\u0131za yard\u0131mc\u0131 olur. Bu sayede, daha stabil ve kullan\u0131c\u0131 dostu bir deneyim elde edebilirsiniz. \u00d6zellikle <code>smoothening<\/code> de\u011feri, elinizdeki k\u00fc\u00e7\u00fck titre\u015fimlerin fare imlecini \u00e7ok fazla oynatmas\u0131n\u0131 engelleyerek daha konforlu bir kullan\u0131m sunar.<\/p>\n<h3>T\u0131klama ve S\u00fcr\u00fckleme Fonksiyonlar\u0131: Jestleri Eyleme D\u00f6n\u00fc\u015ft\u00fcrme<\/h3>\n<p>Fare imlecini hareket ettirmek harika, ancak as\u0131l kontrol, t\u0131klama ve s\u00fcr\u00fckleme gibi etkile\u015fimleri yapabilmekle sa\u011flan\u0131r. Bu b\u00f6l\u00fcmde, belirli el jestlerini alg\u0131layarak sol t\u0131klama ve nesneleri s\u00fcr\u00fckleme i\u015flevlerini nas\u0131l ekleyece\u011fimizi g\u00f6rece\u011fiz.<\/p>\n<pre><code>\n# ... (\u00f6nceki koddan devam) ...\n# pyautogui.mapRange fonksiyonu olmad\u0131\u011f\u0131 i\u00e7in manuel olarak yaz\u0131yoruz\ndef map_range(value, in_min, in_max, out_min, out_max):\n    return (value - in_min) * (out_max - out_min) \/ (in_max - in_min) + out_min\n\nwhile True:\n    # ... (kamera okuma, flip, RGB d\u00f6n\u00fc\u015ft\u00fcrme, hand.process k\u0131sm\u0131) ...\n\n    if results.multi_hand_landmarks:\n        for handLms in results.multi_hand_landmarks:\n            lmList = []\n            for id, lm in enumerate(handLms.landmark):\n                h, w, c = img.shape\n                cx, cy = int(lm.x * w), int(lm.y * h)\n                lmList.append([id, cx, cy])\n\n            if len(lmList) != 0:\n                x1, y1 = lmList[8][1:] # \u0130\u015faret parma\u011f\u0131 ucu\n                x2, y2 = lmList[12][1:] # Orta parmak ucu\n                thumb_x, thumb_y = lmList[4][1:] # Ba\u015fparmak ucu\n\n                cv2.rectangle(img, (frame_reduction, frame_reduction),\n                              (w - frame_reduction, h - frame_reduction),\n                              (255, 0, 255), 2)\n\n                fingers = []\n                # Ba\u015fparmak kontrol\u00fc (sol el\/sa\u011f el ayr\u0131m\u0131 yap\u0131labilir, basit\u00e7e x eksenine g\u00f6re)\n                # Buradaki basit kontrol yerine, parmak bo\u011fumlar\u0131 aras\u0131ndaki mesafeye bakmak daha sa\u011flamd\u0131r\n                # \u00d6rne\u011fin, ba\u015fparmak ucu (4) ile ba\u015fparmak taban\u0131 (2) aras\u0131ndaki mesafe\n                if lmList[4][1] < lmList[3][1]: # Sa\u011f el i\u00e7in ba\u015fparmak a\u00e7\u0131ld\u0131\u011f\u0131nda x k\u00fc\u00e7\u00fcl\u00fcr\n                    fingers.append(1)\n                else:\n                    fingers.append(0)\n\n                # Di\u011fer 4 parmak i\u00e7in (y pozisyonu)\n                # Parmak ucu (id) ve bir alttaki bo\u011fum (id-2) aras\u0131ndaki mesafeye bak\u0131yoruz\n                for id in [8, 12, 16, 20]:\n                    if lmList[id][2] < lmList[id - 2][2]: # Parmak ucu, bo\u011fumdan yukar\u0131da ise a\u00e7\u0131k\n                        fingers.append(1)\n                    else:\n                        fingers.append(0)\n\n                totalFingers = fingers.count(1)\n\n                # Fare hareket modu (sadece i\u015faret parma\u011f\u0131 a\u00e7\u0131k)\n                if totalFingers == 1 and fingers[1] == 1:\n                    x3 = map_range(x1, frame_reduction, w - frame_reduction, 0, screen_width)\n                    y3 = map_range(y1, frame_reduction, h - frame_reduction, 0, screen_height)\n\n                    clocX = plocX + (x3 - plocX) \/ smoothening\n                    clocY = plocY + (y3 - plocY) \/ smoothening\n\n                    pyautogui.moveTo(clocX, clocY)\n                    plocX, plocY = clocX, clocY\n                    cv2.circle(img, (x1, y1), 15, (0, 255, 0), cv2.FILLED)\n\n                # T\u0131klama modu (i\u015faret ve orta parmak a\u00e7\u0131k)\n                # VEYA i\u015faret parma\u011f\u0131 ile ba\u015fparmak aras\u0131ndaki mesafe belirli bir e\u015fi\u011fin alt\u0131ndaysa (pinch)\n                elif fingers[1] == 1 and fingers[2] == 1: # \u0130\u015faret ve orta parmak a\u00e7\u0131k\n                    # Fare t\u0131klamas\u0131n\u0131 tetiklemek i\u00e7in ek bir jest veya mesafe kontrol\u00fc\n                    # \u00d6rne\u011fin, i\u015faret parma\u011f\u0131 ile ba\u015fparmak aras\u0131ndaki mesafeyi \u00f6l\u00e7elim\n                    distance_x = abs(x1 - thumb_x)\n                    distance_y = abs(y1 - thumb_y)\n                    # \u0130ki parmak aras\u0131ndaki \u00d6klid mesafesi\n                    length = ((x1 - thumb_x)<strong>2 + (y1 - thumb_y)<\/strong>2)**0.5\n\n                    if length < 40: # Bu e\u015fik de\u011feri deneme yan\u0131lma ile ayarlanmal\u0131d\u0131r\n                        cv2.circle(img, (x1, y1), 15, (0, 0, 255), cv2.FILLED) # T\u0131klama oldu\u011funu g\u00f6stermek i\u00e7in renk de\u011fi\u015ftir\n                        pyautogui.click() # Sol t\u0131klama\n\n                # S\u00fcr\u00fckleme modu (i\u015faret, orta ve y\u00fcz\u00fck parma\u011f\u0131 a\u00e7\u0131k - veya ba\u015fparmak ve i\u015faret parma\u011f\u0131 s\u0131k\u0131l\u0131p di\u011ferleri a\u00e7\u0131k)\n                # Bu k\u0131s\u0131m biraz daha karma\u015f\u0131k olabilir ve projenin amac\u0131na g\u00f6re de\u011fi\u015fir.\n                # \u00d6rnek: Ba\u015fparmak ile i\u015faret parma\u011f\u0131 s\u0131k\u0131l\u0131 iken, di\u011fer parmaklar a\u00e7\u0131ksa s\u00fcr\u00fckleme yap.\n                # Veya, belirli bir parmak kombinasyonu ile bas\u0131l\u0131 tutma efekti ver.\n                # \u00d6rne\u011fin, ba\u015fparmak ve i\u015faret parma\u011f\u0131 birbirine yak\u0131n ve di\u011ferleri a\u00e7\u0131k\n                # Bu k\u0131sm\u0131 \u015fimdilik bas\u0131l\u0131 tutma olarak ayarlayal\u0131m:\n                # E\u011fer ba\u015fparmak ve i\u015faret parma\u011f\u0131 yak\u0131nsa VE en az 3 parmak a\u00e7\u0131k ise s\u00fcr\u00fckleme\n                elif length < 40 and totalFingers >= 3: # Bas\u0131l\u0131 tutma ve s\u00fcr\u00fckleme\n                    cv2.circle(img, (x1, y1), 15, (255, 255, 0), cv2.FILLED) # S\u00fcr\u00fckleme oldu\u011funu g\u00f6stermek i\u00e7in renk de\u011fi\u015ftir\n                    pyautogui.mouseDown() # Fare sol tu\u015funa bas\u0131l\u0131 tut\n                    # Fare hareket etmeye devam edecektir\n                    x3 = map_range(x1, frame_reduction, w - frame_reduction, 0, screen_width)\n                    y3 = map_range(y1, frame_reduction, h - frame_reduction, 0, screen_height)\n                    clocX = plocX + (x3 - plocX) \/ smoothening\n                    clocY = plocY + (y3 - plocY) \/ smoothening\n                    pyautogui.moveTo(clocX, clocY)\n                    plocX, plocY = clocX, clocY\n                else:\n                    pyautogui.mouseUp() # El gev\u015fedi\u011finde fare tu\u015funu b\u0131rak\n\n    # ... (FPS ve imshow, waitKey kodlar\u0131) ...\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"info-box\">\n        Bilgi Notu: Parmaklar\u0131n a\u00e7\u0131k veya kapal\u0131 oldu\u011funu tespit etmek i\u00e7in, her parmak ucunun (ID 8, 12, 16, 20) kendi bir alt\u0131ndaki bo\u011fumdan (ID 6, 10, 14, 18) daha yukar\u0131da (daha k\u00fc\u00e7\u00fck Y de\u011feri) olup olmad\u0131\u011f\u0131na bakar\u0131z. Ba\u015fparmak i\u00e7in (ID 4), ba\u015fparmak ucunun avu\u00e7 i\u00e7ine g\u00f6re X pozisyonu kontrol edilebilir, \u00e7\u00fcnk\u00fc ba\u015fparmak hareket y\u00f6n\u00fc di\u011ferlerinden farkl\u0131d\u0131r. Bu y\u00f6ntem, parmaklar\u0131n\u0131z\u0131 kameraya g\u00f6re nas\u0131l tuttu\u011funuza ba\u011fl\u0131 olarak ayarlanmas\u0131 gereken e\u015fik de\u011ferleri i\u00e7erir.\n    <\/div>\n<p>Bu kod blo\u011fu, el hareketlerinizi fare eylemlerine d\u00f6n\u00fc\u015ft\u00fcrmenin temelini olu\u015fturur. \u0130\u015faret parma\u011f\u0131n\u0131zla ba\u015fparma\u011f\u0131n\u0131z aras\u0131ndaki mesafeyi \u00f6l\u00e7erek, bir \"s\u0131k\u0131\u015ft\u0131rma\" jestini t\u0131klama olarak alg\u0131layabiliriz. E\u011fer bu s\u0131k\u0131\u015ft\u0131rma jesti belirli bir s\u00fcre devam ederken eliniz hareket ediyorsa, bunu bir s\u00fcr\u00fckleme eylemi olarak yorumlayabiliriz. Bu t\u00fcr jest tan\u0131mlamalar\u0131, projenizin karma\u015f\u0131kl\u0131\u011f\u0131na ve istedi\u011finiz kullan\u0131c\u0131 deneyimine g\u00f6re \u00f6zelle\u015ftirilebilir. Bu a\u015famadan sonra, kendi deneyimlerinize g\u00f6re e\u015fik de\u011ferlerini ve jest tan\u0131mlar\u0131n\u0131 optimize etmeniz gerekecektir. Unutmay\u0131n, iyi bir jest sistemi, hem sezgisel hem de hatas\u0131z olmal\u0131d\u0131r.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve \u0130leri D\u00fczey Optimizasyonlar<\/h2>\n<p>El hareketiyle fare kontrol sistemi, sadece e\u011flenceli bir proje olman\u0131n \u00f6tesinde, ger\u00e7ek d\u00fcnyada bir\u00e7ok faydal\u0131 uygulama alan\u0131na sahiptir. Bu b\u00f6l\u00fcmde, bu teknolojinin kullan\u0131labilece\u011fi baz\u0131 vaka analizlerini ve sisteminizi daha da geli\u015ftirebilece\u011finiz ileri d\u00fczey optimizasyonlar\u0131 inceleyece\u011fiz.<\/p>\n<h4>Vaka Analizi 1: Eri\u015filebilirlik ve Engelli Bireyler<\/h4>\n<p><strong>Senaryo:<\/strong> ALS (Amyotrofik Lateral Skleroz) veya \u015fiddetli artrit gibi motor n\u00f6ron hastal\u0131klar\u0131 nedeniyle geleneksel fare kullanamayan bir kullan\u0131c\u0131 d\u00fc\u015f\u00fcn\u00fcn. Bu kullan\u0131c\u0131lar, ellerini k\u00fc\u00e7\u00fck ve hassas hareketlerle kontrol etmekte zorlanabilirler. El hareketiyle fare kontrol sistemi, bu bireylere bilgisayar eri\u015fimi sa\u011flayarak onlar\u0131n dijital d\u00fcnyayla etkile\u015fimini m\u00fcmk\u00fcn k\u0131lar. \u00d6rne\u011fin, ba\u015flar\u0131n\u0131 veya g\u00f6zlerini kullanamayan ancak elinde k\u0131s\u0131tl\u0131 da olsa hareket edebilenler i\u00e7in b\u00fcy\u00fck bir kolayl\u0131k sunar.<\/p>\n<ul>\n<li><strong>Uygulama:<\/strong> Sistem, daha b\u00fcy\u00fck jest alg\u0131lama alanlar\u0131na ve daha esnek e\u015fik de\u011ferlerine sahip olacak \u015fekilde yap\u0131land\u0131r\u0131labilir. \u00d6rne\u011fin, hafif bir el sallama hareketi bir t\u0131klama olarak alg\u0131lanabilir veya parmaklar\u0131n sadece hafif\u00e7e b\u00fck\u00fclmesi bile yeterli olabilir. PyAutoGUI ile entegre edilen \u00f6zelle\u015ftirilebilir jestler, farkl\u0131 ihtiya\u00e7lara g\u00f6re uyarlanabilir.<\/li>\n<li><strong>Fayda:<\/strong> Kullan\u0131c\u0131n\u0131n ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131n\u0131 art\u0131r\u0131r, e\u011fitim ve i\u015f hayat\u0131na kat\u0131l\u0131m\u0131n\u0131 destekler. Geleneksel yard\u0131mc\u0131 teknolojilere k\u0131yasla daha ekonomik ve \u00f6zelle\u015ftirilebilir bir \u00e7\u00f6z\u00fcm sunar.<\/li>\n<\/ul>\n<h4>Vaka Analizi 2: Sunumlar ve Etkile\u015fimli E\u011fitim<\/h4>\n<p><strong>Senaryo:<\/strong> Bir profesyonel konu\u015fmac\u0131 veya \u00f6\u011fretmen, sunum yaparken veya ders anlat\u0131rken sahnenin farkl\u0131 yerlerinde hareket etmek ve bilgisayar\u0131n\u0131 uzaktan kontrol etmek istiyor. Geleneksel bir sunum kumandas\u0131 yerine, daha do\u011fal ve etkileyici bir y\u00f6ntem ar\u0131yor.<\/p>\n<ul>\n<li><strong>Uygulama:<\/strong> El hareketiyle kontrol, sunum yaz\u0131l\u0131mlar\u0131nda (PowerPoint, Google Slides vb.) slaytlar\u0131 ileri\/geri ta\u015f\u0131mak, sanal bir i\u015faretleyici ile ekranda vurgular yapmak veya video oynat\u0131c\u0131y\u0131 kontrol etmek i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, sa\u011fa do\u011fru bir el kayd\u0131rma hareketi \"sonraki slayt\", yukar\u0131 parmak \"sesi a\u00e7\" gibi jestler atanabilir.<\/li>\n<li><strong>Fayda:<\/strong> Sunumlar\u0131 daha dinamik ve ak\u0131lda kal\u0131c\u0131 hale getirir. Konu\u015fmac\u0131n\u0131n seyirciyle daha fazla g\u00f6z temas\u0131 kurmas\u0131n\u0131 ve sahne hakimiyetini art\u0131rmas\u0131n\u0131 sa\u011flar. E\u011fitim ortamlar\u0131nda \u00f6\u011frencilerin interaktif i\u00e7eriklerle fiziksel olarak etkile\u015fimini te\u015fvik eder.<\/li>\n<\/ul>\n<h4>Vaka Analizi 3: Oyun ve Sanal Ger\u00e7eklik (VR\/AR) Etkile\u015fimleri<\/h4>\n<p><strong>Senaryo:<\/strong> VR\/AR oyunlar\u0131nda veya sanal sim\u00fclasyonlarda daha s\u00fcr\u00fckleyici bir deneyim arayan kullan\u0131c\u0131lar. Geleneksel fiziksel kumandalar\u0131n yerine, kendi ellerini kullanarak sanal nesnelerle do\u011frudan etkile\u015fime ge\u00e7mek istiyorlar.<\/p>\n<ul>\n<li><strong>Uygulama:<\/strong> Kamera tabanl\u0131 el izleme, VR\/AR ba\u015fl\u0131klar\u0131na entegre edilebilir veya harici kameralar arac\u0131l\u0131\u011f\u0131yla kullan\u0131labilir. Sanal d\u00fcnyada bir kap\u0131y\u0131 a\u00e7mak i\u00e7in elinizi uzat\u0131p d\u00f6nd\u00fcrmek, bir nesneyi almak i\u00e7in s\u0131k\u0131\u015ft\u0131rma jesti yapmak veya sanal men\u00fclerde gezinmek i\u00e7in parma\u011f\u0131n\u0131z\u0131 kayd\u0131rmak gibi eylemler programlanabilir.<\/li>\n<li><strong>Fayda:<\/strong> Deneyimin ger\u00e7ek\u00e7ili\u011fini ve s\u00fcr\u00fckleyicili\u011fini art\u0131r\u0131r. Daha do\u011fal ve sezgisel bir kullan\u0131c\u0131 aray\u00fcz\u00fc sunar, \u00f6\u011frenme e\u011frisini azalt\u0131r ve fiziksel kumanda ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/li>\n<\/ul>\n<h4>\u0130leri D\u00fczey Optimizasyonlar ve \u0130pu\u00e7lar\u0131<\/h4>\n<ol>\n<li>\n            <strong>\u00c7oklu El Deste\u011fi ve El Ayr\u0131m\u0131:<\/strong> MediaPipe, varsay\u0131lan olarak birden fazla el tespit edebilir. Sol ve sa\u011f elleri ay\u0131rt ederek her ele farkl\u0131 i\u015flevler atayabilirsiniz. \u00d6rne\u011fin, sol el navigasyon i\u00e7in, sa\u011f el t\u0131klama ve s\u00fcr\u00fckleme i\u00e7in kullan\u0131labilir. Bu, kontrol\u00fc daha zengin ve karma\u015f\u0131k hale getirebilir.<\/p>\n<pre><code>\n# handLms.multi_handedness ile elin sol mu sa\u011f m\u0131 oldu\u011funu tespit edebilirsiniz\nfor hand_idx, hand_landmarks in enumerate(results.multi_hand_landmarks):\n    handedness_label = results.multi_handedness[hand_idx].classification[0].label\n    if handedness_label == 'Left':\n        # Sol el i\u00e7in i\u015flemler\n    elif handedness_label == 'Right':\n        # Sa\u011f el i\u00e7in i\u015flemler\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li>\n            <strong>Jest Tan\u0131ma Geli\u015ftirme:<\/strong> Basit parmak a\u00e7ma\/kapama kontrol\u00fcn\u00fcn \u00f6tesine ge\u00e7erek, makine \u00f6\u011frenimi modelleri (\u00f6rne\u011fin, Scikit-learn ile SVM veya k\u00fc\u00e7\u00fck bir sinir a\u011f\u0131) kullanarak daha karma\u015f\u0131k jestleri tan\u0131yabilirsiniz. Elin a\u00e7\u0131lar\u0131, parmaklar\u0131n b\u00fck\u00fclme oranlar\u0131 ve el noktalar\u0131 aras\u0131ndaki dinamik de\u011fi\u015fiklikler, farkl\u0131 jestleri (yumruk, V i\u015fareti, ok i\u015fareti vb.) tan\u0131mak i\u00e7in \u00f6zellik olarak kullan\u0131labilir.\n        <\/li>\n<li>\n            <strong>Hassasiyet ve Gecikme Ayar\u0131:<\/strong> <code>smoothening<\/code> fakt\u00f6r\u00fcn\u00fc ve <code>frame_reduction<\/code> alan\u0131n\u0131 optimize etmek, fare hareketinin ak\u0131c\u0131l\u0131\u011f\u0131 ve do\u011frulu\u011fu \u00fczerinde b\u00fcy\u00fck etkiye sahiptir. Daha d\u00fc\u015f\u00fck <code>smoothening<\/code>, daha h\u0131zl\u0131 ancak daha titrek hareket anlam\u0131na gelirken, daha y\u00fcksek de\u011ferler daha p\u00fcr\u00fczs\u00fcz ama daha yava\u015f tepki verir. Kameran\u0131n konumu, \u0131\u015f\u0131kland\u0131rma ve arka plan gibi \u00e7evresel fakt\u00f6rler de performans\u0131 etkiler.\n        <\/li>\n<li>\n            <strong>Geli\u015fmi\u015f Geri Bildirim:<\/strong> Sadece ekranda \u00e7izim yapmak yerine, sesli geri bildirimler (t\u0131klama sesi gibi) veya ekran \u00fczerinde k\u00fc\u00e7\u00fck animasyonlar (bir butona t\u0131klan\u0131nca renginin de\u011fi\u015fmesi) kullan\u0131c\u0131 deneyimini zenginle\u015ftirebilir.\n        <\/li>\n<li>\n            <strong>Kalibrasyon Sistemi:<\/strong> Kullan\u0131c\u0131n\u0131n el boyutlar\u0131na veya tercih etti\u011fi hareket alan\u0131na g\u00f6re dinamik olarak ayarlanabilen bir kalibrasyon mod\u00fcl\u00fc eklemek, sistemin daha geni\u015f bir kullan\u0131c\u0131 kitlesi taraf\u0131ndan kullan\u0131labilmesini sa\u011flar. \u00d6rne\u011fin, kullan\u0131c\u0131dan elini belirli bir alanda hareket ettirmesi istenerek bu alan\u0131n min\/max koordinatlar\u0131 otomatik olarak tespit edilebilir.\n        <\/li>\n<\/ol>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: El izleme sisteminizin performans\u0131n\u0131 art\u0131rmak i\u00e7in g\u00fc\u00e7l\u00fc bir kamera kullanmaya \u00f6zen g\u00f6sterin. Yetersiz \u0131\u015f\u0131k ko\u015fullar\u0131 veya d\u00fc\u015f\u00fck \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc kameralar, MediaPipe'in el tespiti do\u011frulu\u011funu \u00f6nemli \u00f6l\u00e7\u00fcde d\u00fc\u015f\u00fcrebilir. Ortam \u0131\u015f\u0131\u011f\u0131n\u0131 optimize etmek, daha stabil bir deneyim sa\u011flayacakt\u0131r.\n    <\/div>\n<p>Bu ileri d\u00fczey teknikler ve ger\u00e7ek d\u00fcnya senaryolar\u0131, projenizin potansiyelini anlaman\u0131za ve onu daha i\u015flevsel, kullan\u0131c\u0131 dostu ve \u00e7e\u015fitli uygulamalara adapte edilebilir hale getirmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n, bir projenin ger\u00e7ek de\u011feri, onun problem \u00e7\u00f6zme yetene\u011finde yatar.<\/p>\n<h2>S\u0131k\u00e7a Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcm \u00d6nerileri Nelerdir?<\/h2>\n<p>Her teknoloji projesinde oldu\u011fu gibi, el hareketiyle fare kontrol sistemi geli\u015ftirirken de baz\u0131 zorluklarla kar\u015f\u0131la\u015fmak olas\u0131d\u0131r. Ancak, bu sorunlar\u0131n \u00e7o\u011fu do\u011fru yakla\u015f\u0131mlarla \u00e7\u00f6z\u00fclebilir. \u0130\u015fte s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan baz\u0131 sorunlar ve bunlara y\u00f6nelik \u00e7\u00f6z\u00fcm \u00f6nerileri:<\/p>\n<ol>\n<li>\n            <strong>Kamera Tespiti ve Ak\u0131\u015f Sorunlar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> <code>cv2.VideoCapture(0)<\/code> kameray\u0131 a\u00e7am\u0131yor veya \"Kamera a\u00e7\u0131lamad\u0131\" hatas\u0131 veriyor.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li>Kameran\u0131n bilgisayar\u0131n\u0131za do\u011fru \u015fekilde ba\u011fl\u0131 oldu\u011fundan ve s\u00fcr\u00fcc\u00fclerinin g\u00fcncel oldu\u011fundan emin olun.<\/li>\n<li>Kameran\u0131n ba\u015fka bir uygulama (Zoom, Skype, OBS vb.) taraf\u0131ndan kullan\u0131lmad\u0131\u011f\u0131ndan emin olun.<\/li>\n<li>Farkl\u0131 kamera indekslerini deneyin: <code>cv2.VideoCapture(1)<\/code>, <code>(2)<\/code> vb. Baz\u0131 sistemlerde birden fazla kamera olabilir.<\/li>\n<li>Gerekirse bilgisayar\u0131n\u0131z\u0131 yeniden ba\u015flat\u0131n.<\/li>\n<li>Sanalla\u015ft\u0131rma ortam\u0131nda (VMware, VirtualBox) \u00e7al\u0131\u015f\u0131yorsan\u0131z, USB kamera ge\u00e7i\u015f ayarlar\u0131n\u0131 kontrol edin.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n            <strong>D\u00fc\u015f\u00fck FPS (Kare H\u0131z\u0131) ve Gecikme:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> Fare imleci gecikmeli hareket ediyor veya ekran ak\u0131c\u0131 de\u011fil.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li>Bilgisayar\u0131n\u0131z\u0131n CPU ve GPU kullan\u0131m\u0131n\u0131 kontrol edin. MediaPipe ve OpenCV i\u015flemci yo\u011fun uygulamalar olabilir.<\/li>\n<li>Daha d\u00fc\u015f\u00fck kamera \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc kullanmay\u0131 deneyin: <code>cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)<\/code> ve <code>cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)<\/code>.<\/li>\n<li>Kodu daha verimli hale getirin. \u00d6zellikle d\u00f6ng\u00fc i\u00e7inde gereksiz hesaplamalardan ka\u00e7\u0131n\u0131n.<\/li>\n<li><code>smoothening<\/code> fakt\u00f6r\u00fcn\u00fc ayarlay\u0131n. \u00c7ok y\u00fcksek de\u011ferler gecikmeyi art\u0131rabilir.<\/li>\n<li>Arka planda \u00e7al\u0131\u015fan di\u011fer uygulamalar\u0131 kapat\u0131n.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n            <strong>Yanl\u0131\u015f Jest Alg\u0131lama veya Titrek \u0130mle\u00e7 Hareketi:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> Sistem yanl\u0131\u015f t\u0131klamalar yap\u0131yor, s\u00fcr\u00fcklemeyi yanl\u0131\u015f alg\u0131l\u0131yor veya fare imleci \u00e7ok titrek.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li><strong>I\u015f\u0131kland\u0131rma:<\/strong> \u0130yi ve e\u015fit bir \u0131\u015f\u0131kland\u0131rma sa\u011flay\u0131n. G\u00f6lgeler veya d\u00fc\u015f\u00fck \u0131\u015f\u0131k, el izleme do\u011frulu\u011funu d\u00fc\u015f\u00fcrebilir. Kameraya do\u011frudan g\u00fcne\u015f \u0131\u015f\u0131\u011f\u0131 gelmemesine dikkat edin.<\/li>\n<li><strong>Arka Plan:<\/strong> D\u00fcz, sade ve kontrast\u0131 y\u00fcksek bir arka plan kullan\u0131n. Karma\u015f\u0131k arka planlar MediaPipe'in el tespiti algoritmalar\u0131n\u0131 zorlayabilir.<\/li>\n<li><strong>E\u015fik De\u011ferleri:<\/strong> Jest alg\u0131lama i\u00e7in kulland\u0131\u011f\u0131n\u0131z mesafe e\u015fiklerini (\u00f6rne\u011fin t\u0131klama i\u00e7in <code>length < 40<\/code>) kendi elinize ve kamera mesafenize g\u00f6re ayarlay\u0131n. Bu de\u011ferler ki\u015fiden ki\u015fiye de\u011fi\u015febilir.<\/li>\n<li><strong>Filtreleme:<\/strong> \u0130mle\u00e7 hareketini daha da yumu\u015fatmak i\u00e7in Kalman filtresi gibi daha geli\u015fmi\u015f filtreleme tekniklerini deneyebilirsiniz, ancak bu ek karma\u015f\u0131kl\u0131k getirecektir.<\/li>\n<li><strong>Kamera Mesafesi:<\/strong> Elinizi kameradan ne \u00e7ok uzak ne de \u00e7ok yak\u0131n tutun. Optimal bir mesafeyi deneyerek bulun.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n            <strong>PyAutoGUI Kontrol Sorunlar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> PyAutoGUI fareyi kontrol etmiyor veya beklenmedik \u015fekillerde davran\u0131yor.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li><strong>Mod\u00fcl \u0130\u00e7e Aktar\u0131m\u0131:<\/strong> <code>import pyautogui<\/code>'nin do\u011fru bir \u015fekilde yap\u0131ld\u0131\u011f\u0131ndan emin olun.<\/li>\n<li><strong>\u0130zinler:<\/strong> macOS gibi baz\u0131 i\u015fletim sistemlerinde PyAutoGUI'nin fare ve klavyeyi kontrol etmesi i\u00e7in g\u00fcvenlik ayarlar\u0131ndan \"Eri\u015filebilirlik\" (Accessibility) izni vermeniz gerekebilir.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcn\u00fcrl\u00fck ve \u00d6l\u00e7eklendirme:<\/strong> Kamera koordinatlar\u0131n\u0131 ekran koordinatlar\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcrken kullan\u0131lan \u00f6l\u00e7eklendirme mant\u0131\u011f\u0131n\u0131z\u0131 iki kez kontrol edin. <code>map_range<\/code> fonksiyonunun do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/li>\n<li><strong>Kill Switch:<\/strong> Geli\u015ftirme s\u0131ras\u0131nda PyAutoGUI'nin s\u00fcrekli kontrol\u00fc ele almas\u0131n\u0131 engellemek i\u00e7in, ekran\u0131n bir k\u00f6\u015fesine fareyi g\u00f6t\u00fcrd\u00fc\u011f\u00fcn\u00fczde program\u0131 durduran veya belirli bir tu\u015fa bast\u0131\u011f\u0131n\u0131zda \u00e7\u0131kan bir mekanizma (<code>pyautogui.FAILSAFE = True<\/code>) kullan\u0131n.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n            <strong>Ortam ve K\u00fct\u00fcphane Ba\u011f\u0131ml\u0131l\u0131klar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>Sorun:<\/strong> K\u00fct\u00fcphane y\u00fcklenemiyor veya s\u00fcr\u00fcm uyumsuzluklar\u0131 ya\u015fan\u0131yor.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li>Sanal bir ortam (<code>venv<\/code> veya <code>conda env<\/code>) kullanmak, farkl\u0131 projeler i\u00e7in ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler.<\/li>\n<li><code>pip install<\/code> komutlar\u0131n\u0131 do\u011fru yazd\u0131\u011f\u0131n\u0131zdan emin olun (\u00f6rne\u011fin, <code>opencv-python<\/code> de\u011fil <code>opencv<\/code>).<\/li>\n<li>Python ve k\u00fct\u00fcphane s\u00fcr\u00fcmlerinin uyumlu oldu\u011fundan emin olun. Gerekirse k\u00fct\u00fcphaneleri g\u00fcncelleyin: <code>pip install --upgrade opencv-python mediapipe pyautogui<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Bu sorun giderme ad\u0131mlar\u0131, geli\u015ftirme s\u00fcrecinde kar\u015f\u0131la\u015fabilece\u011finiz \u00e7o\u011fu engeli a\u015fman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Sab\u0131r ve deneme yan\u0131lma, bu t\u00fcr projelerde ba\u015far\u0131l\u0131 olman\u0131n anahtar\u0131d\u0131r. Her sorunu bir \u00f6\u011frenme f\u0131rsat\u0131 olarak g\u00f6r\u00fcn ve sisteminizi her ad\u0131mda daha sa\u011flam hale getirin.<\/p>\n<h2>Sonu\u00e7: Gelecekte El Hareketi Kontrol\u00fc Nereye Gidiyor?<\/h2>\n<p>Bu kapsaml\u0131 rehber boyunca, Python kullanarak kendi el hareketiyle fare kontrol sistemimizi ad\u0131m ad\u0131m nas\u0131l in\u015fa edece\u011fimizi \u00f6\u011frendik. Kamera eri\u015fiminden temel el izlemeye, fare hareketlerinin kodlanmas\u0131ndan t\u0131klama ve s\u00fcr\u00fckleme jestlerinin entegrasyonuna kadar bir\u00e7ok \u00f6nemli konuyu ele ald\u0131k. G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere, modern bilgisayar g\u00f6r\u00fc\u015f\u00fc k\u00fct\u00fcphaneleri sayesinde, bir zamanlar bilim kurgu olarak g\u00f6r\u00fclen bu t\u00fcr etkile\u015fimli sistemleri geli\u015ftirmek art\u0131k \u00e7ok daha eri\u015filebilir hale geldi.<\/p>\n<p>El hareketiyle kontrol, yaln\u0131zca bir teknolojik merak olman\u0131n \u00f6tesinde, kullan\u0131c\u0131 deneyimini zenginle\u015ftirme, eri\u015filebilirli\u011fi art\u0131rma ve dijital etkile\u015fimimizi daha do\u011fal hale getirme potansiyeli ta\u015f\u0131yor. Engelli bireyler i\u00e7in sundu\u011fu ba\u011f\u0131ms\u0131zl\u0131k, e\u011fitim ve sunum ortamlar\u0131nda yaratt\u0131\u011f\u0131 dinamizm ve VR\/AR gibi gelecek nesil platformlardaki rol\u00fc, bu teknolojinin ne kadar de\u011ferli oldu\u011funu kan\u0131tl\u0131yor. \u015e\u00fcphesiz ki, bu alandaki geli\u015fmeler h\u0131zla devam edecek ve yak\u0131n gelecekte hayat\u0131m\u0131z\u0131n bir\u00e7ok alan\u0131na entegre olacak.<\/p>\n<p>Gelecekte, el hareketiyle kontrol sistemlerinin daha hassas, daha d\u00fc\u015f\u00fck gecikmeli ve daha adaptif hale gelmesini bekleyebiliriz. Geli\u015fmi\u015f makine \u00f6\u011frenimi modelleri sayesinde, \u00e7ok daha karma\u015f\u0131k ve ki\u015fiye \u00f6zel jestler tan\u0131nabilecek, hatta farkl\u0131 k\u00fclt\u00fcrel jestler bile sistemlere entegre edilebilecek. Ayr\u0131ca, giyilebilir teknolojilerle (ak\u0131ll\u0131 saatler, \u00f6zel eldivenler) entegrasyon, bu sistemleri daha ta\u015f\u0131nabilir ve her ortamda kullan\u0131labilir k\u0131labilir. Kameralar\u0131n daha k\u00fc\u00e7\u00fck, daha g\u00fc\u00e7l\u00fc ve her yere entegre edilebilir hale gelmesiyle, \"ekrans\u0131z\" etkile\u015fimler veya art\u0131r\u0131lm\u0131\u015f ger\u00e7eklik aray\u00fczleri, el hareketleriyle kontrol\u00fcn ana sahnelerinden biri haline gelecektir. Bu, bilgisayarlarla olan ili\u015fkimizi temelden de\u011fi\u015ftirecek ve dijital d\u00fcnyaya bak\u0131\u015f a\u00e7\u0131m\u0131z\u0131 yeniden \u015fekillendirecektir.<\/p>\n<p>Kendi projenizi geli\u015ftirirken edindi\u011finiz bilgiler, size sadece bir fare kontrol\u00f6r\u00fc in\u015fa etme becerisi de\u011fil, ayn\u0131 zamanda bilgisayar g\u00f6r\u00fc\u015f\u00fc ve yapay zeka alan\u0131nda sa\u011flam bir temel kazand\u0131rd\u0131. Bu temel \u00fczerine, \u00e7ok daha karma\u015f\u0131k ve yenilik\u00e7i projeler in\u015fa edebilirsiniz. Unutmay\u0131n, teknolojinin s\u0131n\u0131rlar\u0131n\u0131 zorlamak ve yeni etkile\u015fim yollar\u0131 ke\u015ffetmek tamamen sizin yarat\u0131c\u0131l\u0131\u011f\u0131n\u0131za kalm\u0131\u015f bir s\u00fcre\u00e7tir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ol>\n<li>\n            <strong>Bu sistem sadece Python ile mi \u00e7al\u0131\u015f\u0131r?<\/strong><\/p>\n<p>Evet, bu rehberde olu\u015fturdu\u011fumuz sistem Python ve ilgili k\u00fct\u00fcphanelerle \u00e7al\u0131\u015f\u0131r. Ancak, bilgisayar g\u00f6r\u00fc\u015f\u00fc ve hareket alg\u0131lama konseptleri di\u011fer programlama dillerinde (C++, Java, JavaScript) de uygulanabilir. MediaPipe'in farkl\u0131 platformlar i\u00e7in de SDK'lar\u0131 bulunmaktad\u0131r.<\/p>\n<\/li>\n<li>\n            <strong>Hangi i\u015fletim sistemlerinde kullan\u0131labilir?<\/strong><\/p>\n<p>PyAutoGUI ve OpenCV k\u00fct\u00fcphaneleri Windows, macOS ve Linux gibi pop\u00fcler i\u015fletim sistemlerinde desteklenir. Dolay\u0131s\u0131yla, bu sistemi bu i\u015fletim sistemlerinin herhangi birinde \u00e7al\u0131\u015ft\u0131rabilirsiniz. macOS'ta PyAutoGUI i\u00e7in g\u00fcvenlik izinleri gerekebilir.<\/p>\n<\/li>\n<li>\n            <strong>Herhangi bir webcam ile \u00e7al\u0131\u015f\u0131r m\u0131?<\/strong><\/p>\n<p>Evet, \u00e7o\u011fu standart USB webcam veya dahili laptop kameras\u0131 ile \u00e7al\u0131\u015f\u0131r. Ancak, daha iyi performans ve do\u011fruluk i\u00e7in y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc (HD veya Full HD) ve iyi \u0131\u015f\u0131k performans\u0131na sahip bir kamera kullan\u0131lmas\u0131 tavsiye edilir.<\/p>\n<\/li>\n<li>\n            <strong>Sistemin hassasiyetini nas\u0131l art\u0131rabilirim?<\/strong><\/p>\n<p>Hassasiyeti art\u0131rmak i\u00e7in \u015fu y\u00f6ntemleri deneyebilirsiniz: <code>smoothening<\/code> de\u011ferini d\u00fc\u015f\u00fcrmek (daha h\u0131zl\u0131 tepki, daha az yumu\u015fatma), kamera \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc art\u0131rmak (daha fazla piksel detay\u0131), daha iyi \u0131\u015f\u0131kland\u0131rma sa\u011flamak, kamera mesafesini optimize etmek ve jest tan\u0131ma e\u015fiklerini daha dar ayarlamak.<\/p>\n<\/li>\n<li>\n            <strong>Bu projeyi ticari ama\u00e7la kullanabilir miyim?<\/strong><\/p>\n<p>Kullan\u0131lan k\u00fct\u00fcphanelerin (OpenCV, MediaPipe, PyAutoGUI) lisanslar\u0131na ba\u011fl\u0131 olarak de\u011fi\u015fir. \u00c7o\u011fu a\u00e7\u0131k kaynak lisans (\u00f6rn. Apache 2.0, MIT) ticari kullan\u0131ma izin verir, ancak yine de her k\u00fct\u00fcphanenin lisans ko\u015fullar\u0131n\u0131 dikkatlice incelemeniz \u00f6nemlidir. Kendi yazd\u0131\u011f\u0131n\u0131z kodun lisanslamas\u0131 tamamen size aittir.<\/p>\n<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-30706","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber<\/title>\n<meta name=\"description\" content=\"Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc temellerinden ileri d\u00fczey optimizasyonlara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi sanal farenizi olu\u015fturun ve etkile\u015fimin gelece\u011fine ad\u0131m at\u0131n!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber\" \/>\n<meta property=\"og:description\" content=\"Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc temellerinden ileri d\u00fczey optimizasyonlara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi sanal farenizi olu\u015fturun ve etkile\u015fimin gelece\u011fine ad\u0131m at\u0131n!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-01T00:01:51+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"33 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber\",\"datePublished\":\"2025-10-01T00:01:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/\"},\"wordCount\":5138,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/\",\"name\":\"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-01T00:01:51+00:00\",\"description\":\"Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc temellerinden ileri d\u00fczey optimizasyonlara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi sanal farenizi olu\u015fturun ve etkile\u015fimin gelece\u011fine ad\u0131m at\u0131n!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber","description":"Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc temellerinden ileri d\u00fczey optimizasyonlara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi sanal farenizi olu\u015fturun ve etkile\u015fimin gelece\u011fine ad\u0131m at\u0131n!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber","og_description":"Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc temellerinden ileri d\u00fczey optimizasyonlara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi sanal farenizi olu\u015fturun ve etkile\u015fimin gelece\u011fine ad\u0131m at\u0131n!","og_url":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-01T00:01:51+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"33 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber","datePublished":"2025-10-01T00:01:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/"},"wordCount":5138,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/","name":"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-01T00:01:51+00:00","description":"Python kullanarak kendi el hareketiyle fare kontrol sisteminizi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 merak ediyor musunuz? Bu kapsaml\u0131 rehberde, bilgisayar g\u00f6r\u00fc\u015f\u00fc temellerinden ileri d\u00fczey optimizasyonlara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi sanal farenizi olu\u015fturun ve etkile\u015fimin gelece\u011fine ad\u0131m at\u0131n!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-el-hareketiyle-fare-kontrolu-adim-adim-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python ile El Hareketiyle Fare Kontrol\u00fc: Ad\u0131m Ad\u0131m Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30706","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30706"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30706\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30706"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30706"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}