{"id":1039,"date":"2022-10-30T15:58:45","date_gmt":"2022-10-30T15:58:45","guid":{"rendered":"https:\/\/unydevelopernetwork.com\/?p=1039"},"modified":"2022-10-30T15:58:49","modified_gmt":"2022-10-30T15:58:49","slug":"merekognisi-bentuk-objek-geometri-dua-dimensi-dengan-menggunakan-opencv","status":"publish","type":"post","link":"https:\/\/unydevelopernetwork.com\/index.php\/2022\/10\/30\/merekognisi-bentuk-objek-geometri-dua-dimensi-dengan-menggunakan-opencv\/","title":{"rendered":"Merekognisi Bentuk Objek Geometri Dua Dimensi dengan Menggunakan OpenCV"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>\n<p>Selamat datang di UNYDeveloperNetwork. Pada postingan kali ini, kita akan bermain lagi dengan Computer Vision. Ya, sesuai dengan judul, kita akan menggunakan openCV untuk merekognisi bentuk suatu objek dengan menggunakan OpenCV. Bagaimanakah caranya? Mari kita simak artikel berikut dengan seksama. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p>OpenCV adalah sebuah library yang sangat powerful yang fokusnya adalah melakukan tugas-tugas Computer Vision secara realtime. Selain itu juga <em>open source<\/em>, sehingga siapapun dapat menggunakannya tanpa harus membayar. Nah, begitu pula dengan postingan kali ini. Postingan kali ini akan memanfaatkan power dari OpenCV tersebut untuk melakukan satu tugas; yakni merekognisi bentuk objek geometri dua dimensi. Keluaran dari project kita kali ini adalah seperti tangkapan layar di bawah ini.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"411\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-700x411.png\" alt=\"\" class=\"wp-image-1041\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-700x411.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-300x176.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-768x450.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image.png 1282w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><figcaption>Keluaran dari Project Rekognisi Bentuk Geometri 2 dimensi sederhana<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Tertarik untuk melanjutkan? Mari kita lanjutkan.<\/p>\n\n\n\n<p>Sebelum kita mulai dengan project ini, ada baiknya kita menyiapkan alat dan bahannya terlebih dahulu. Untuk alat yang digunakan dalam project ini adalah <strong>PyCharm 2022.2.3 Community Edition<\/strong>. Sedangkan untuk bahan-bahannya adalah sebagai berikut:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Python versi 3.10<\/li><li>opencv-python versi 4.6.0.66<\/li><li>numpy 1.23.4<\/li><\/ul>\n\n\n\n<p>Setelah siap dengan alat dan bahannya, mari kita mulai koding. Namun sebelumnya kita akan bahas terlebih dahulu konsep dan alur programnya mulai dari menerima input, memproses input, hingga memperoleh output. Secara sederhananya, alur program yang akan dibuat adalah sebagai berikut:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Import library ke dalam script<\/li><li>Import gambar dengan menggunakan openCV<\/li><li>Ubah gambar ke dalam mode grayscale<\/li><li>Atur threshold pada gambar yang sudah dalam mode grayscale dan cari tahu konturnya<\/li><li>Lakukan iterasi pada kontur yang telah ditemukan dan hitung jumlah konturnya<\/li><li>Gambar kontur yang ditemukan dengan garis untuk menegaskan kontur yang ditemukan<\/li><li>Dalam melakukan iterasi, cari tahu titik pusat bentuk geometrinya<\/li><li>Klasifikasikan bentuk yang terdeteksi berdasarkan jumlah titik kontur yang ditemukan<\/li><li>Berikan label pada bentuk geometri yang telah ditemukan klasifikasinya<\/li><li>Tampilkan keluaran<\/li><\/ol>\n\n\n\n<p>Secara keseluruhan ada sepuluh tahapan yang harus dilalui dari mengimport gambar hingga memperoleh. Kita akan bahas satu persatu.<\/p>\n\n\n\n<p><strong>1. Import library ke dalam script<\/strong><\/p>\n\n\n\n<p>Untuk melakukan import library ke dalam script, dapat menggunakan baris kode berikut ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2<\/code><\/pre>\n\n\n\n<p><strong>2. Import gambar dengan menggunakan openCV<\/strong><\/p>\n\n\n\n<p>Setelah melakukan import library, kita dapat mengimport gambar yang akan kita analisis dengan menggunakan openCV. Berikut ini adalah baris kodenya.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">img = cv2.imread('###nama_file###')<\/pre>\n\n\n\n<p>Pada baris ini, kita dapat memasukkan nama file gambar kita lengkap beserta ekstensinya ke dalam ###nama_file###. Untuk format gambar disarankan menggunakan format <strong>png<\/strong>. Berikut adalah contoh implementasi baris kode lengkap dengan nama filenya:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>img = cv2.imread('shape_testing.png')<\/code><\/pre>\n\n\n\n<p><strong>3. Ubah gambar ke dalam mode grayscale<\/strong><\/p>\n\n\n\n<p>Tahapan selanjutnya adalah mengubah gambar ke dalam mode grayscale. Hal ini penting dilakukan agar saat proses rekognisi tidak tergangggu oleh banyaknya channel warna. Keluaran dari mengubah gambar ke dalam mode grayscale ini disimpan dalam sebuah variabel yang nantinya akan dipanggil ketika proses mencari kontur. Untuk mengubah gambar ke dalam mode grayscale dapat menggunakan baris kode berikut ini. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)<\/pre>\n\n\n\n<p>Jika kita mencoba menampilkan gambar hasil olahan di tahap ini maka akan seperti tangkapan layar berikut ini.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-1-700x356.png\" alt=\"\" class=\"wp-image-1043\" width=\"438\" height=\"223\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-1-700x356.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-1-300x152.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-1-768x390.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-1-1536x781.png 1536w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-1.png 1822w\" sizes=\"auto, (max-width: 438px) 100vw, 438px\" \/><figcaption>Gambar original dan gambar hasil olahan ke dalam bentuk grayscale<\/figcaption><\/figure>\n<\/div>\n\n\n<p><strong>4. Atur threshold pada gambar yang sudah dalam mode grayscale dan cari tahu konturnya<\/strong><\/p>\n\n\n\n<p>Tahap keempat adalah mengatur treshold pada gambar yang sudah dalam mode grayscale sehingga memungkinkan proses pencarian kontur dilakukan. Untuk mengatur threshold pada gambar dapat menggunakan baris kode berikut ini.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)<\/pre>\n\n\n\n<p>Setelah mengatur threshold, proses dilanjutkan dengan mencari kontur pada gambar dengan menggunakan baris kode berikut ini.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)<\/pre>\n\n\n\n<p><strong>5. Lakukan iterasi pada kontur yang telah ditemukan<\/strong><\/p>\n\n\n\n<p>Tahapan selanjutnya adalah proses iterasi untuk menghitung jumlah konturnya. Untuk itu, gunakan blok kode berikut ini<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">i = 0\r\n\r\r\nfor contour in contours:\r\n\r\n    if i == 0:\r\n        i = 1\r\n        continue\r\n\r\r\n    approx = cv2.approxPolyDP(contour, 0.01 * cv2.arcLength(contour, True), True)<\/pre>\n\n\n\n<p><strong>6. Gambar kontur yang ditemukan dengan garis untuk menegaskan kontur yang ditemukan<\/strong><\/p>\n\n\n\n<p>Setelah menemukan dan mendapatkan jumlah kontur dari suatu objek, kita akan menggambarkan sebuah garis yang menghubungkan antar kontur untuk menegaskan kontur yang sudah ditemukan. Untuk melakukannya gunakan baris kode berikut ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv2.drawContours(img, &#91;contour], 0, (0, 0, 255), 5)<\/code><\/pre>\n\n\n\n<p><strong>7. Dalam melakukan iterasi, cari tahu titik pusat bentuk geometrinya<\/strong><\/p>\n\n\n\n<p>Selama melakukan proses interasi, kita juga harus mencari tahu titik pusat geometrinya sebagai titik awal untuk menuliskan label bentuk geometrinya. Untuk mencari tahu titik pusat geometrinya, dapat menggunakan blok kode berikut ini.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">M = cv2.moments(contour)<br>if M['m00'] != 0.0:<br>    x = int(M['m10'] \/ M['m00'])<br>    y = int(M['m01'] \/ M['m00'])<\/pre>\n\n\n\n<p><strong>8. Klasifikasikan bentuk yang terdeteksi berdasarkan jumlah titik kontur yang ditemukan<\/strong> <strong>dan<\/strong><br><strong>9. Berikan label pada bentuk geometri yang telah ditemukan klasifikasinya<\/strong><\/p>\n\n\n\n<p>Dua langkah selanjutnya adalah mengklasifikasikan bentuk yang terdeteksi berdasarkan jumlah titik kontur dan memberikan label pada bentuk geometri tersebut. Untuk melakukannya, dapat menggunakan blok kode berikut ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    if len(approx) == 3:\r\n        cv2.putText(img, 'Triangle', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    elif len(approx) == 4:\r\n        cv2.putText(img, 'Rectangular', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    elif len(approx) == 5:\r\n        cv2.putText(img, 'Pentagon', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    elif len(approx) == 6:\r\n        cv2.putText(img, 'Hexagon', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    else:\r\n        cv2.putText(img, 'circle', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)<\/code><\/pre>\n\n\n\n<p><strong>10. Tampilkan keluaran<\/strong><\/p>\n\n\n\n<p>Tahapan terakhir adalah menampilkan hasil keluarannya. Untuk itu, kita akan menggunakan fungsi <strong>imshow<\/strong> untuk menampilkan hasil keluarannya. Berikut adalah blok kodenya.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv2.imshow('shapes', img)\r\n\r\ncv2.waitKey(0)\r\ncv2.destroyAllWindows()<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Mari kita bahas satu per satu mulai dari memasukkan gambar hingga program dapat merekognisi object geometri dua dimensi yang ada di dalamnya. <\/p>\n\n\n\n<p><strong>1. Input gambar<\/strong><\/p>\n\n\n\n<p>Ketika kita melakukan input gambar, maka tidak ada proses berarti yang terjadi. Gambar yang dijadikan input akan diload oleh openCV dan disimpan dalam sebuah variabel. Jika variabel ini ditampilkan maka juga akan menampilkan gambar yang kita jadikan rujukan\/input.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-2-700x411.png\" alt=\"\" class=\"wp-image-1044\" width=\"399\" height=\"234\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-2-700x411.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-2-300x176.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-2-768x450.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-2.png 1282w\" sizes=\"auto, (max-width: 399px) 100vw, 399px\" \/><figcaption>Gambar original<\/figcaption><\/figure>\n<\/div>\n\n\n<p><strong>2. Mengubah gambar Ke dalam mode grayscale<\/strong><\/p>\n\n\n\n<p>Tahapan selanjutnya adalah mengubah gambar ke dalam mode grayscale sehingga pencarian kontur dapat lebih mudah. Pada tahapan ini, seperti yang sudah bisa ditebak, gambar akan menjadi grayscale. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-3-700x411.png\" alt=\"\" class=\"wp-image-1045\" width=\"411\" height=\"241\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-3-700x411.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-3-300x176.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-3-768x450.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-3.png 1282w\" sizes=\"auto, (max-width: 411px) 100vw, 411px\" \/><figcaption>Gambar yang telah diubah menjadi mode grayscale<\/figcaption><\/figure>\n<\/div>\n\n\n<p><strong>3. Mencari kontur dari object dan menggambar garis penegas kontur<\/strong><\/p>\n\n\n\n<p>Di langkah ini, sebuah proses iterasi dilakukan untuk menemukan dari gambar yang sudah dalam mode grayscale tadi. Setelah kontur dari sebuah object ditemukan, maka sebuah garis penegas akan digambarkan pada gambar original. Sehingga keluarannya akan menjadi seperti berikut ini. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-4-700x411.png\" alt=\"\" class=\"wp-image-1046\" width=\"464\" height=\"272\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-4-700x411.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-4-300x176.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-4-768x450.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-4.png 1282w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><figcaption>Gambar original dengan garis tambahan kontur berwarna merah<\/figcaption><\/figure>\n<\/div>\n\n\n<p><strong>4. Menuliskan label pada object<\/strong><\/p>\n\n\n\n<p>Di langkah terakhir ini tidak ada hal khusus yang terjadi. Karena di langkah terakhir ini, proses pencarian kontur sudah selesai begitu proses klasifikasinya. Sehingga di tahap ini hanya menambahkan teks ke dalam object sebagai label klasifikasi.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-5-700x411.png\" alt=\"\" class=\"wp-image-1047\" width=\"481\" height=\"283\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-5-700x411.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-5-300x176.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-5-768x450.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-5.png 1282w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><figcaption>Keluaran akhir dengan label klasifikasi bentuk object<\/figcaption><\/figure>\n<\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Bagaimana, mudah bukan? Jika masih bingung berikut adalah kodingan lengkap dari program pada postingan kali.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2\r\n\r\nimg = cv2.imread('shape_testing.png')\r\n\r\ngray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\r\n\r\n_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)\r\n\r\ncontours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)\r\n\r\ni = 0\r\n\r\nfor contour in contours:\r\n\r\n    if i == 0:\r\n        i = 1\r\n        continue\r\n\r\n    approx = cv2.approxPolyDP(contour, 0.01 * cv2.arcLength(contour, True), True)\r\n\r\n    cv2.drawContours(img, &#91;contour], 0, (0, 0, 255), 5)\r\n\r\n    M = cv2.moments(contour)\r\n    if M&#91;'m00'] != 0.0:\r\n        x = int(M&#91;'m10'] \/ M&#91;'m00'])\r\n        y = int(M&#91;'m01'] \/ M&#91;'m00'])\r\n\r\n    if len(approx) == 3:\r\n        cv2.putText(img, 'Triangle', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    elif len(approx) == 4:\r\n        cv2.putText(img, 'Rectangular', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    elif len(approx) == 5:\r\n        cv2.putText(img, 'Pentagon', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    elif len(approx) == 6:\r\n        cv2.putText(img, 'Hexagon', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\n    else:\r\n        cv2.putText(img, 'circle', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)\r\n\r\ncv2.imshow('shapes', img)\r\n\r\ncv2.waitKey(0)\r\ncv2.destroyAllWindows()<\/code><\/pre>\n\n\n\n<p>Sedangkan berikut ini adalah struktur file dalam project <strong>Merekognisi Bentuk Objek Geometri Dua Dimensi dengan Menggunakan OpenCV<\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"283\" height=\"220\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-6.png\" alt=\"\" class=\"wp-image-1049\"\/><\/figure>\n<\/div>\n\n\n<p>Berikut adalah gambar yang digunakan dalam project ini. Untuk mengunduhnya, <strong>klik kanan<\/strong> pada gambar dan pilih <strong>simpan gambar sebagai&#8230;<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"394\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/shape_testing-700x394.png\" alt=\"\" class=\"wp-image-1050\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/shape_testing-700x394.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/shape_testing-300x169.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/shape_testing-768x432.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/shape_testing.png 1280w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n<\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Demikian postingan <strong>Merekognisi Bentuk Objek Geometri Dua Dimensi dengan Menggunakan OpenCV<\/strong> kali ini. Semoga bermanfaat. Apabila ada pertanyaan mengenai project ini, Anda dapat meninggalkannya di kolom komentar. Dan, Apabila Anda menemukan artikel ini berguna, Anda dapat membagikannya. Anda juga dapat mencuplik beberapa bagian dari artikel ini, namun jangan lupa untuk sertakan URL nya. Terima kasih.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">^_^<\/h2>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Selamat datang di UNYDeveloperNetwork. Pada postingan kali ini, kita akan bermain lagi dengan Computer Vision. Ya, sesuai dengan judul, kita akan menggunakan openCV untuk merekognisi bentuk suatu objek dengan menggunakan OpenCV. Bagaimanakah&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1047,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[24,27,2,69],"tags":[320,298,319,318,295,59,304,25,321,33],"class_list":["post-1039","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-software-development","category-tutorial","category-umum-software-development","tag-2d-geometry-object-recognition","tag-computer-vision","tag-geometry-object","tag-object-recognition","tag-opencv","tag-programming","tag-pycharm","tag-python","tag-software-development","tag-software-engineering"],"featured_image_src":"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-5.png","author_info":{"display_name":"Muhammad Irfan Luthfi","author_link":"https:\/\/unydevelopernetwork.com\/index.php\/author\/admin\/"},"jetpack_featured_media_url":"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2022\/10\/image-5.png","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/1039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/comments?post=1039"}],"version-history":[{"count":3,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/1039\/revisions"}],"predecessor-version":[{"id":1051,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/1039\/revisions\/1051"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/media\/1047"}],"wp:attachment":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/media?parent=1039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/categories?post=1039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/tags?post=1039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}