<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zero45</title>
    <description>The latest articles on DEV Community by Zero45 (@zero45).</description>
    <link>https://dev.to/zero45</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1715061%2F6e57e659-8f82-4953-9362-bc95a610ccf3.jpg</url>
      <title>DEV Community: Zero45</title>
      <link>https://dev.to/zero45</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zero45"/>
    <language>en</language>
    <item>
      <title>YOLOv8 Screen Capture Detection App [Update]</title>
      <dc:creator>Zero45</dc:creator>
      <pubDate>Thu, 04 Jul 2024 06:25:28 +0000</pubDate>
      <link>https://dev.to/zero45/yolov8-screen-capture-detection-app-300n</link>
      <guid>https://dev.to/zero45/yolov8-screen-capture-detection-app-300n</guid>
      <description>&lt;h2&gt;
  
  
  Tentang Program
&lt;/h2&gt;

&lt;p&gt;Saya mencoba membuat aplikasi pendeteksian di dalam monitor sebagai bentuk skripsi dari perkuliahan saya, dengan cara kerja menangkap bytes yang ada di layar monitor &amp;gt; clone image from bytes &amp;gt; convert numpy array &amp;gt; plot/detect(YOLOv8) &amp;gt; clone image from array &amp;gt; show result.&lt;/p&gt;

&lt;p&gt;*Sekedar sharing project, diharapkan saya mendapatkan beberapa masukkan terkait project. Terima kasih sudah membaca.&lt;/p&gt;

&lt;h2&gt;
  
  
  Model: YOLOv8
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mendeteksi tidak pakai helm, sarung tangan dan jacket.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  General User Interface
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tkinter&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Screen Orientation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;1680x1050&lt;/li&gt;
&lt;li&gt;1600x900 (recommended)&lt;/li&gt;
&lt;li&gt;1440x900&lt;/li&gt;
&lt;li&gt;1400x1050&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  List Button
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Play button : menjalankan pendeteksian&lt;/li&gt;
&lt;li&gt;Pause button : memberhentikan pendeteksian(sebagai limiter while loop).&lt;/li&gt;
&lt;li&gt;Disable Screen button : Set screen menjadi default(saat awal di buka).&lt;/li&gt;
&lt;li&gt;Sharpen button : Membuat image menjadi sharpen dengan cv2.&lt;/li&gt;
&lt;li&gt;Nightvis button : Membuat image menjadi BGR2HLS dengan cv2.&lt;/li&gt;
&lt;li&gt;Save Button : Untuk sekarang masih save dalam bentuk foto .png (*Next akan di coba update untuk save video .mp4).
7 Update Button : Untuk mengkonfigurasi inference dari model yang sudah di latih (accuracy : imgsz, IoU, Conf).&lt;/li&gt;
&lt;li&gt;Reset Button : Untuk mengreset konfigurasi inference menjadi nilai default.&lt;/li&gt;
&lt;li&gt;Quit Button : Untuk keluar dari program.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Preview Program
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhyrf2tvbu32ayh5sfga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhyrf2tvbu32ayh5sfga.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kondisi awal mulai&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxtd4hzt6hwysqrrmxmu8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxtd4hzt6hwysqrrmxmu8.png" alt="Image description" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Detect Normal&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zkankjgnxf4atiap5u4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zkankjgnxf4atiap5u4.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Detect Sharpen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr5sioxof7pqzuoo0q19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr5sioxof7pqzuoo0q19.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Detect Sharpen + Nightvis&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Bagian ini saya akan menjelaskan apa yang saya tulis di dalam code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzznhuoqsy8bk58fm2iz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzznhuoqsy8bk58fm2iz.png" alt="Image description" width="477" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Line 1 - 9 adalah beberapa packages yang dibutuhkan dalam menjalankan program.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Multiprocessing &amp;lt; diadakan untuk menghindari program memiliki window lebih dari yang dibuat. (*Masih belum pasti)&lt;/li&gt;
&lt;li&gt;Ultralytics &amp;lt; untuk pendeteksian pada numpy array yang dimiliki sebagai data.&lt;/li&gt;
&lt;li&gt;Tkinter &amp;lt; untuk GUI&lt;/li&gt;
&lt;li&gt;Numpy &amp;lt; numpy array&lt;/li&gt;
&lt;li&gt;cv2 &amp;lt; untuk konfigurasi image (filter, konversi warna)&lt;/li&gt;
&lt;li&gt;os.path &amp;lt; untuk pengecekan file pada proses save image agar tidak overwrite.&lt;/li&gt;
&lt;li&gt;mss &amp;lt; untuk menangkap bytes dari monitor yang digunakan.&lt;/li&gt;
&lt;li&gt;PIL &amp;lt; untuk mengclone image dari bytes dan dari array.&lt;/li&gt;
&lt;li&gt;random &amp;lt; untuk membuat angka random &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bl5i0mdwgzddpppdzuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bl5i0mdwgzddpppdzuf.png" alt="Image description" width="595" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;wdw adalah window utama yang akan digunakan untuk menampilkan pendeteksian. beberapa variable di set false dikarnakan pendeteksian diawali dengan deteksi normal. setiap variable bisa saja berubah sesuai input user.&lt;/p&gt;

&lt;p&gt;window utama memiliki title, dan icon. Hal yang perlu di perhatikan adalah mendapatkan nilai yang sebenarnya dari screen monitor (display orientation) di aplikasi ini saya pakai .winfo_screenwidth() dan .winfo_screenheight(). beberapa variable digunakan untuk starting position, dan lebar, tinggi dari window app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fateml8al9rme40kbyjpb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fateml8al9rme40kbyjpb.png" alt="Image description" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;karna button divisualisasikan dengan image, maka perlu beberapa image untuk button. variable listwidget digunakan untuk menampung semua button yang sudah dibuat, agar tidak terjadi overwrite.&lt;/p&gt;

&lt;p&gt;iou, conf, dan acu variable disiapkan untuk tampungan nilai dari sliders pada aplikasi.&lt;/p&gt;

&lt;p&gt;withdraw() untuk menyembunyikan main window (sebagai salah satu cara membuat splash screen).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlshypz10i8rgrzlhv0a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlshypz10i8rgrzlhv0a.png" alt="Image description" width="753" height="642"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;kumpulan function untuk membuat button, sliders, dan label yang memiliki beberapa parameter yang dibutuhkan. untuk button memerlukan 3 argument : argument pertama image, argument kedua perintah untuk menjalankan function yang di tugaskan pada button, argument ketiga letak frames.&lt;br&gt;
labelinfo hanya 1 argument :  argument untuk pesan string. sliders 3 argument : argument pertama untuk variable yang akan di tampung nilai dari sliders, argument kedua untuk nama sliders, argument ketiga untuk posisi start sesuai default inference argument YOLOv8 Detect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7us1kn039s902ozyer6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7us1kn039s902ozyer6w.png" alt="Image description" width="662" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;mengresize semua image yang akan digunakan pada pembuatan button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7v7t7wwujihg9t8g010r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7v7t7wwujihg9t8g010r.png" alt="Image description" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;function yang digunakan untuk membuat window splashscreen, dimana window ini akan tampil diawal saat program dijalankan selama beberapa detik. dan di dalam nya terdapat beberapa kata motivasi untuk tetap hidup dan berjuang.&lt;/p&gt;

&lt;p&gt;window ini di tampilkan di tengah layar dengan ketentuan nilai tertentu(tidak adaptive ke berbagai resolusi). Diperlukan pengurangan dengan width dan height dari window splash screen agar window splash screen berada di tengah.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzzscm8ydi1gc82ru7hm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzzscm8ydi1gc82ru7hm.png" alt="Image description" width="516" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2vywpgoigdkqcsxcbqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2vywpgoigdkqcsxcbqo.png" alt="Image description" width="440" height="78"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;semua yang dibutuhkan main window terload up &amp;gt; munculkan splash screen &amp;gt; tunggu 5 detik. splashscreen dihancurkan dan main window ditampilkan kembali.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30c9aqll6j5nyc26zej7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30c9aqll6j5nyc26zej7.png" alt="Image description" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftd2c94v8stijeyvs6rpi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftd2c94v8stijeyvs6rpi.png" alt="Image description" width="507" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kedua gambar diatas adalah inti dari program dimana program membuat sebuah jaring penangkap bytes dengan mss. starting position jaring top(0), left(0), lebar jaring, tinggi jaring. setelah mendapatkan bytes, clone image dari bytes, dan buat kernel untuk sharpen image.&lt;/p&gt;

&lt;p&gt;di normal detection tidak menggunakan kernel, kernel dipakai jika variabel sharpeOn bernilai True. hasil dari clone image &amp;gt; numpy array untuk melakukan pendeteksian YOLO dan plotting &amp;gt; hasil pendeteksian dibuat clone image dari array &amp;gt; kedalam variable yang akan mengupdate image pada label tkinter.&lt;/p&gt;

&lt;p&gt;[UPDATED] di dalam code ini terdapat perubahan pada tangkapan gambar, dikarnakan ketika diubah dari BGRA menjadi RGB pendeteksian jadi tidak bagus, maka ditetapkan BGRA menjadi BGR &amp;gt; gunakan data sebagai bahan untuk mempredict &amp;gt; setelah itu convert dan tampilkan dalam warna RGB.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7oly0pss8vergitzqbw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7oly0pss8vergitzqbw1.png" alt="Image description" width="589" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Untuk perintah tombol start jalankan detect() dan config state dari beberapa tombol "active" / "disable" untuk mengurangi kemungkinan bug yang akan terjadi karna user input.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwdtiaukmfol9x0w5ku3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwdtiaukmfol9x0w5ku3.png" alt="Image description" width="495" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Untuk memberhentikan detect()/sebagai limiter dari while loop(wdw.after()) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxsoln8uu9ivip7t41dd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxsoln8uu9ivip7t41dd.png" alt="Image description" width="701" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;disable button memiliki perintah hampir sama dengan pause, hanya membuat program kembali ke state awal saat dijalankan(layar pendeteksian).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwd3j1l9r9kuyiu23gq6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwd3j1l9r9kuyiu23gq6o.png" alt="Image description" width="387" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;untuk button sharpen dan nightvis bersifat togle dengan tujuan memberikan nilai True / False, yang nantinya akan mempengaruhi detect().&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy271ns1ufzis5yn10j6z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy271ns1ufzis5yn10j6z.png" alt="Image description" width="587" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;melakukan pengecekan if dengan nama file, agar tidak terjadi overwrite data dan save image hasil clone image menjadi .png&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu22odjbf4uns9hjhgdvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu22odjbf4uns9hjhgdvv.png" alt="Image description" width="553" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;update model ini digunakan ketika button update model di tekan, mengubah nilai default dari imgsz(accuracy), conf, dan iou sesuai input user dari sliders.&lt;/p&gt;

&lt;p&gt;*nilai imgsz harus bisa dibagi 2^5 dan menghasilkan int. karna hal ini akan mempengaruhi backbone dari YOLO.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg63tdf2ue3sr12q0d6v0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg63tdf2ue3sr12q0d6v0.png" alt="Image description" width="592" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reset model untuk mengembalikan nilai ke default dari model yang sudah diupdate imgsz, Conf, dan IoU.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnfybqt1p0ilv4ofhgqb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnfybqt1p0ilv4ofhgqb6.png" alt="Image description" width="690" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quit program dengan membalikan layar utama ke initial state dan memberi jeda 3 detik untuk hancurkan window utama lalu exit program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwb5h3y4qgnvj0vw7jmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwb5h3y4qgnvj0vw7jmm.png" alt="Image description" width="798" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;gambar diatas merupakan kumpulan frame(untuk tata letak) dan widget yang di butuhkan main window untuk melakukan tugas nya dalam mendeteksi. setiap line di eksekusi ketika main window dalam keadaan hide agar saat splash screen dihancurkan dan main window di tampilkan, semua dalam keadaan siap.&lt;/p&gt;

&lt;p&gt;[UPDATED] saya sudah mencoba dengan dual monitor dengan display orientation 1600x900 di kedua layar dengan file dtctdbl.py &lt;/p&gt;

&lt;h2&gt;
  
  
  FULL CODE
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Alfin45/YOLOv8-Screen-Capture-Detection-App" rel="noopener noreferrer"&gt;https://github.com/Alfin45/YOLOv8-Screen-Capture-Detection-App&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>ai</category>
      <category>indonesia</category>
    </item>
  </channel>
</rss>
