Cara menggunakan Python untuk menjejak bentuk pada imej
Pengenalan:
Pemprosesan imej ialah bahagian penting dalam bidang penglihatan komputer, dan menjejak bentuk tertentu dalam imej adalah salah satu tugas biasa. Artikel ini akan memperkenalkan cara menggunakan Python dan perpustakaan OpenCV untuk menjejak bentuk dalam gambar, dan memberikan contoh kod yang sepadan.
1. Penyediaan:
Sebelum mula menulis kod, kita perlu memasang perpustakaan Python dan OpenCV, dan menyediakan gambar yang mengandungi bentuk sasaran sebagai input. Pertama, pastikan anda telah memasang Python Anda boleh memuat turun dan memasang versi yang sesuai untuk sistem pengendalian anda di tapak web rasmi Python. Seterusnya, kita perlu memasang perpustakaan OpenCV menggunakan arahan pip. Buka terminal (atau baris arahan) dan masukkan arahan berikut untuk memasang OpenCV:
pip install opencv-python
2. Import perpustakaan dan baca imej:
Sebelum menulis kod secara rasmi, kita perlu mengimport perpustakaan yang sepadan terlebih dahulu. Python menyediakan pernyataan import untuk mengimport perpustakaan yang anda perlu gunakan. Dalam tugasan ini, kita perlu mengimport perpustakaan cv2 (iaitu antara muka Python ke perpustakaan OpenCV). Selain itu, kami juga perlu mengimport perpustakaan numpy untuk menyokong operasi tatasusunan. Berikut ialah kod untuk mengimport perpustakaan yang diperlukan:
import cv2
import numpy sebagai np
Seterusnya, kita perlu membaca imej dan menukarnya kepada skala kelabu. Imej skala kelabu lebih mudah diproses dan boleh mengurangkan jumlah pengiraan. Memandangkan kerja masa hadapan boleh mengubah suai imej asal, kami boleh menggunakan salinan untuk menyimpan imej skala kelabu. Berikut ialah kod untuk membaca imej dan menukarnya kepada imej skala kelabu:
imej = cv2.imread("input.jpg")
gray = cv2.cvtColor(imej, cv2.COLOR_BGR2GRAY)
3 penjejakan:
Sebelum melakukan pengesanan bentuk, kita perlu melakukan pengesanan bentuk terlebih dahulu. OpenCV menyediakan fungsi cv2.findContours() untuk mencari kontur dalam imej. Fungsi ini menerima imej terdua sebagai input dan mengembalikan senarai semua kontur dalam imej. Berikut ialah contoh kod untuk pengesanan bentuk:
ret, thresh = cv2.threshold(kelabu, 127, 255, 0)
kontur, hierarki = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.SIMP_APPROX)
approx = cv2.approxPolyDP(contour, epsilon, True)
Dalam kod di atas, ret ialah nilai Boolean untuk Menunjukkan sama ada operasi ambang berjaya. thresh ialah imej ambang yang digunakan untuk pengesanan kontur. kontur ialah senarai yang mengandungi semua kontur yang dikesan. hierarki ialah maklumat hierarki garis besar. epsilon ialah parameter yang digunakan untuk menganggarkan kontur. lebih kurang ialah kontur anggaran. Akhir sekali, fungsi cv2.drawContours() digunakan untuk melukis kontur.
Selepas melengkapkan pengesanan bentuk, kami boleh memaparkan imej hasil dan menyimpannya sebagai fail baharu. Berikut ialah contoh kod untuk memaparkan dan menyimpan hasil:
cv2.waitKey(0)
cv2.destroyAllWindows()
Penjelasan kod:
Dalam kod di atas, fungsi cv2.imshow() digunakan untuk memaparkan imej hasil. cv2.waitKey(0) digunakan untuk menunggu pengguna menekan sebarang kekunci sebelum menutup tetingkap imej. Fungsi cv2.destroyAllWindows() digunakan untuk menutup semua tetingkap yang terbuka. Akhir sekali, fungsi cv2.imwrite() digunakan untuk menyimpan imej yang terhasil.
Artikel ini memperkenalkan cara menggunakan Python dan perpustakaan OpenCV untuk menjejak bentuk dalam gambar. Kami mula-mula belajar tentang penyediaan, kemudian mengimport perpustakaan yang diperlukan dan membaca imej. Seterusnya, kami melakukan pengesanan bentuk dan penjejakan untuk menjejak bentuk sasaran dengan menganggarkan kontur dan melukis kontur. Akhir sekali, kami menunjukkan imej yang terhasil dan menyimpan hasil penjejakan.
import cv2 import numpy as np image = cv2.imread("input.jpg") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 127, 255, 0) contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for contour in contours: epsilon = 0.04 * cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, epsilon, True) cv2.drawContours(image, [approx], 0, (0, 255, 0), 2) cv2.imshow("Result", image) cv2.waitKey(0) cv2.destroyAllWindows() cv2.imwrite("output.jpg", image)
Atas ialah kandungan terperinci Cara menggunakan Python untuk mengesan bentuk pada gambar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!