Pertama, mari pasang OpenCV:
pip3 memasang opencv-pythonBaca dan Tunjukkan Imej
Perkara pertama yang perlu kita pelajari adalah membaca dan menulis gambar. Membaca fail gambar, memasukkan jalan penuh ke file atau nama fail (jika fail tersebut ada di folder python), dan menambahkan bendera dilakukan menggunakan cv2.membaca (). Bendera boleh mengambil nilai 1 (untuk gambar warna), 0 (untuk skala abu-abu), atau -1 (untuk gambar warna dengan saluran). Seseorang boleh menggunakan cv2.fungsi imshow () untuk menunjukkan gambar; di sini, dua argumen disahkan - nama untuk gambar dan gambar yang akan ditunjukkan. Seterusnya, kami menggunakan cv2.fungsi waitKey () untuk menunggu input papan kekunci; a 0 untuk cv2.fungsi waitKey (0) menyiratkan masa menunggu kekal. Sebaliknya, cv2.Fungsi destrAllWindows () akan menutup tingkap.
Ini akan membaca dan membuka gambar, dan menyimpan gambar sehingga anda menutupnya:
import cv2gambar = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('gambar', gambar)
cv2.tungguKey (0)
cv2.hancurkanAllWindows ()
Tulis Imej
Kami menggunakan cv2.fungsi imwrite () untuk menyimpan gambar. Fungsi ini mengambil dua parameter - nama untuk menyimpan gambar dan gambar yang ingin anda simpan.
import cv2gambar = cv2.imread ('kenal pasti.jpg ', -1)
cv2.imwrite ('save_image).png ', gambar)
Tangkap Video dari Kamera Web
Untuk merakam video, kita mulakan dengan menginisialisasi cv2.Fungsi VideoCapture (). Kami kemudian menggunakan gelung “while” untuk terus menangkap video. Walaupun pengguna tidak menekan tombol keluar, kami dapat membaca bingkai dan menunjukkannya menggunakan read () dan cv2.fungsi imshow (). Kami kemudian memasukkan kunci "rehat" untuk keluar dari gelung; dalam kes ini, nombor 27 adalah kunci ESC. Sekiranya pengguna menekan kekunci ESC, mereka keluar dari gelung. Setelah keluar dari gelung, perlu untuk melepaskan tangkapan.
import numpy sebagai npimport cv2
tangkapan = cv2.Rakaman Video (0)
sementara (Betul):
ret, bingkai = tangkapan.baca ()
cv2.imshow ('bingkai', bingkai)
sekiranya cv2.waitKey (1) & 0xFF == 27:
rehat
tangkap.pelepasan ()
cv2.hancurkanAllWindows ()
Memainkan Fail Video
Memainkan fail video adalah seperti menangkap video dari kamera web. Untuk melakukan ini, cv2.Fungsi VideoCapture () digunakan; nama fail video yang ingin anda mainkan kemudian ditambahkan ke fungsi. Gelung "while" digunakan lagi, dan kunci keluar, dalam hal ini, adalah kunci "s" pada papan kekunci. Ini akan membuka dan memainkan fail video dan menutupnya apabila pengguna menekan kekunci "s".
import numpy sebagai npimport cv2
tangkapan = cv2.VideoCapture ("Megamind.avi ")
sementara (Betul):
ret, bingkai = tangkapan.baca ()
cv2.imshow ('bingkai', bingkai)
sekiranya cv2.waitKey (1) & 0xFF == ord ("s"):
rehat
tangkap.pelepasan ()
cv2.hancurkanAllWindows ()
Menyimpan Fail Video
Menyimpan fail video memerlukan sedikit kerja lagi. The cv2.Fungsi VideoWriter () mengambil total 4 parameter - nama file output, kod FourCC, jumlah bingkai sesaat, dan ukuran bingkai. Selanjutnya, seseorang mesti menentukan kod FourCC, yang merupakan codec video menggunakan cv2.Fungsi VideoWriter_fourcc (). Menggunakan tangkapan.Dibuka (), kami membaca bingkai dan menulis bingkai output. Kami juga dapat menunjukkan bingkai menggunakan cv2.fungsi imshow (). Kemudian, kami menggunakan cv2.waitKey (1) & 0xFF == ord ('s') untuk menetapkan kunci keluar. Dalam hal ini, jika pengguna menekan tombol "s", mereka akan keluar dari gelung dan kemudian melepaskan tangkapan dan output dan menutup tingkap.
import numpy sebagai npimport cv2
tangkapan = cv2.Rakaman Video (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
output = cv2.VideoWriter ('output.avi ', fourcc, 30.0, (640,480))
semasa (tangkapan.Dibuka ()):
ret, bingkai = tangkapan.baca ()
pengeluaran.tulis (bingkai)
cv2.imshow ('bingkai', bingkai)
sekiranya cv2.waitKey (1) & 0xFF == ord ('s'):
rehat
tangkap.pelepasan ()
pengeluaran.pelepasan ()
cv2.memusnahkanAllWindows ()
Garis Lukisan, Lingkaran, Segi Empat, dan Teks
Perkara pertama yang akan kita pelajari ialah garis. Untuk menarik garis, kita hanya menggunakan cv2.fungsi garis (). Fungsi ini mengambil 5 argumen - video sumber, titik permulaan, titik akhir, warna, dan ketebalan garis. Dalam kes berikut, kami telah memutuskan untuk menarik sempadan segi empat tepat (terdiri daripada 4 garis):
import cv2tangkapan = cv2.VideoCapture ('vtest.avi ')
Walaupun Betul:
ret, bingkai = tangkapan.baca ()
lebar = int (tangkapan.dapatkan (3))
tinggi = int (tangkapan.dapatkan (4))
garis1 = cv2.garis (bingkai, (0,0), (0, tinggi), (255, 255, 255), 10)
garis2 = cv2.garis (baris1, (0, 0), (lebar, 0), (255, 255, 255), 10)
garis3 = cv2.garis (garis2, (0, tinggi), (lebar, tinggi), (255, 255, 255), 10)
garis4 = cv2.garis (garis3, (lebar, 0), (lebar, tinggi), (255, 255, 255), 10)
cv2.imshow ('bingkai', baris4)
sekiranya cv2.waitKey (40) == ord ('q'):
rehat
tangkap.pelepasan ()
cv2.memusnahkanAllWindows ()
Seterusnya, kami akan melukis bulatan dan segi empat tepat pada video. Untuk melukis segi empat tepat, kita menggunakan cv2.fungsi segi empat tepat (), yang mengambil 5 argumen seperti garis. Untuk melukis bulatan, kita menggunakan fungsi cv2.bulatan (), yang juga mengambil 5 argumen - video sumber, titik tengah, jejari, warna, dan ketebalan.
import cv2tangkapan = cv2.VideoCapture ('vtest.avi ')
Walaupun Betul:
ret, bingkai = tangkapan.baca ()
lebar = int (tangkapan.dapatkan (3))
tinggi = int (tangkapan.dapatkan (4))
segi empat tepat = cv2.segi empat tepat (bingkai, (150, 15), (650, 550), (0,0,0), 11)
cv2.bulatan (segi empat tepat, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('bingkai', bingkai)
sekiranya cv2.waitKey (40) == ord ('q'):
rehat
tangkap.pelepasan ()
cv2.hancurkanAllWindows ()
Sekarang, mari kita tambahkan beberapa teks pada video yang kita ada. Untuk melakukan ini, kita perlu menentukan fon; di sini, kami memilih cv2.FONT_HERSHEY_SIMPLEX. Setelah fon dipilih, kita dapat menggunakan fungsi cv2.putText () untuk melakukan selebihnya. Cv2.putText () mengambil 8 argumen - video sumber, teks yang ingin anda tulis, kedudukan di mana anda mahukan, fon, pembesaran, warna, ketebalan, dan cv2.LINE_AA (yang menjadikan semuanya kelihatan lebih baik).
import cv2tangkapan = cv2.VideoCapture ('vtest.avi ')
Walaupun Betul:
ret, bingkai = tangkapan.baca ()
lebar = int (tangkapan.dapatkan (3))
tinggi = int (tangkapan.dapatkan (4))
fon = cv2.FONT_HERSHEY_SIMPLEX
gambar = cv2.putText (bingkai, "VTEST.AVI ", (200, 200), fon, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('bingkai', gambar)
sekiranya cv2.waitKey (40) == ord ('q'):
rehat
tangkap.pelepasan ()
cv2.memusnahkanAllWindows ()
OpenCV mampu melakukan banyak perkara hebat di mana seseorang mesti bermula di suatu tempat. Mungkin belajar membuat dan menyimpan gambar dan video. Dalam tutorial ini, kami belajar melakukan asas-asas penglihatan komputer.
Selamat Pengekodan!