- 1. Operasi dan Penyamaran Bitwise
- 2. Konvolusi & Kekaburan
- 3. Menajamkan - Membalikkan kekaburan gambar
- 4. Threshoding (Binariisasi)
- 5. Pelebaran, Hakisan, Pembukaan / Penutupan
- 6. Pengecaman tepi dan kecerunan Imej
- 14. Perspektif & Transformasi Afin
- 8. Aplikasi Lakaran Langsung
Dalam tutorial sebelumnya, kami telah belajar mengenai OpenCV dan melakukan beberapa pemprosesan gambar asas dan kemudian dalam tutorial seterusnya kami telah melakukan beberapa manipulasi gambar di OpenCV seperti pemotongan, putaran, transformasi gambar dan lain-lain. Oleh itu, bersambung dengan tutorial Manipulasi Imej sebelumnya, di sini kita belajar beberapa lagi teknik manipulasi gambar seperti dan pada akhir tutorial kami akan membina program python-opencv untuk membuat lakaran langsung dari suapan langsung kamera web. Aplikasi ini akan menggunakan banyak fungsi pemprosesan Imej yang telah kita pelajari sejauh ini atau akan kita pelajari dalam tutorial ini, jadi ini akan menjadi contoh praktikal yang baik untuk merangkumi semua fungsi.
Seperti yang diberitahu dalam tutorial sebelumnya, OpenCV adalah Open Source Commuter Vision Library yang mempunyai antara muka C ++, Python dan Java dan menyokong Windows, Linux, Mac OS, iOS dan Android. Oleh itu, ia dapat dipasang dengan mudah di Raspberry Pi dengan persekitaran Python dan Linux. Dan Raspberry Pi dengan OpenCV dan kamera terpasang dapat digunakan untuk membuat banyak aplikasi pemprosesan gambar masa nyata seperti Pengesanan wajah, kunci muka, penjejakan objek, pengesanan plat nombor kereta, sistem keselamatan Rumah dll.
Dalam tutorial ini, kita akan melihat beberapa manipulasi gambar menggunakan Python OpenCV. Di sini kita akan belajar menerapkan fungsi berikut pada gambar menggunakan Python OpenCV:
- Operasi dan Penyamaran Bitwise
- Konvolusi & Kekaburan
- Menajamkan - Membalikkan kekaburan gambar
- Ambang (Binariisasi)
- Pelebaran, Hakisan, Pembukaan / Penutupan
- Pengesanan tepi dan kecerunan Imej
- Perspektif & Transformasi Afin
- Aplikasi Lakaran Langsung
1. Operasi dan Penyamaran Bitwise
Operasi bitwise membantu anda dalam penyamaran gambar dan membantu anda membuat beberapa gambar mudah.
Membuat petak
import cv2 import numpy sebagai np #kita hanya menggunakan dua dimensi kerana ini adalah gambar skala kelabu, jika kita menggunakan gambar #warna, kita kemudian menggunakan segi empat tepat = np.zeros ((300,300,3), np.uint8) # Membuat segi empat sama = np.zeros ((300,300), np.uint8) cv2. segi empat tepat (persegi, (50,50), (250,250), 255, -1) cv2.imshow ("persegi", persegi) cv2. tungguKey (0)
Membuat elips
elips = np.zeros ((300,300), np.uint8) cv2. elipse (elips, (150,150), (150,150), 30,0,180,255, -1) cv2.imshow ("elips", elips) cv2.waitKey (0)
Mengeksperimen dengan operasi bitwise
#AND_ menunjukkan hanya di mana kedua-duanya bersilang
BitwiseAND = cv2.bitwise_and (persegi, elips) cv2.imshow ("AND", BitwiseAND) cv2.waitKey (0)
#OR_ menunjukkan hanya di mana segi empat sama atau elips
BitwiseOR = cv2.bitwise_or (persegi, elips) cv2.imshow ("OR", BitwiseOR) cv2.waitKey (0)
#XOR_ menunjukkan hanya tempat yang wujud dengan sendirinya
BitwiseXOR = cv2.bitwise_xor (persegi, elips) cv2.imshow ("XOR", BitwiseXOR) cv2.waitKey (0)
#NOT_ menunjukkan semua yang bukan sebahagian daripada elips dan operasi TIDAK boleh digunakan hanya untuk satu angka
BitwiseNOT_elp = cv2.bitwise_not (elips) cv2.imshow ("NOT_ellipse", BitwiseNOT_elp) cv2.waitKey (0) cv2.destroyAllWindows ()
2. Konvolusi & Kekaburan
A kekusutan ialah operasi matematik yang dilakukan pada dua fungsi menghasilkan fungsi ketiga yang biasanya versi diubahsuai daripada fungsi asal.
Gambar keluaran = gambar Fungsi ukuran Kernel
Dalam penglihatan komputer kita menggunakan kernel untuk menentukan ukuran di mana kita menjalankan fungsi manipulasi pada gambar kita.
Kekaburan adalah operasi di mana kita rata-rata piksel dalam suatu wilayah (Kernel)
OpenCV mengaburkan gambar dengan menerapkan kernel, kernel memberitahu anda bagaimana mengubah nilai piksel yang diberikan dengan menggabungkannya dengan jumlah piksel tetangga yang berbeda. Kernel diterapkan pada setiap piksel dalam gambar satu demi satu untuk menghasilkan gambar akhir.
Secara sederhana, konvolusi gambar hanyalah penggandaan elemen yang bijak dari dua matriks diikuti dengan jumlah.
Kita boleh memahaminya dengan contoh berikut.
Di atas adalah Kernel 3X3.
Kami mengalikan dengan 1/25 untuk menormalkan iaitu jumlah hingga 1 kita telah meningkatkan intensiti atau menurunkan intensitas seperti dalam hal mencerahkan atau menggelapkan gambar.
Mari kita uji kaedah opencv blurring filter2D, yang diberikan oleh fungsi cv2.filter2D (gambar, -1, kernel)
import cv2 import numpy sebagai np image = cv2.imread ('elephant.jpg') cv2.imshow ('original', image) cv2.waitKey (0)
#membuat matriks kernel 3x3
kernel_3x3 = np.ones ((3,3), np.float32) / 9
# kami menggunakan cv2.filter2D untuk membelitkan kernel dengan gambar
kabur = cv2.filter2D (gambar, -1, kernel_3x3) cv2.imshow ('3x3_blurring', blur) cv2.waitKey (0)
#membuat matriks kernel 7x7
kernel_7x7 = np.ones ((7,7), np.float32) / 49
# kami menggunakan cv2.filter2D untuk membelitkan kernel dengan gambar
kabur = cv2.filter2D (gambar, -1, kernel_7x7) cv2.imshow ('7x7_blurring', blur) cv2.waitKey (0) cv2.destroyAllWindows ()
Terdapat juga kaedah kabur jenis lain:
cv2.blur - Nilai purata pada tetingkap yang ditentukan.
cv2.GaussianBlur - Mirip tetapi menggunakan tetingkap Gaussian (lebih menekankan pada titik di sekitar pusat).
cv2.medianBlur– Menggunakan median semua elemen di tetingkap.
cv2.bilateralFilter– Mengaburkan sambil menjaga tepi tajam, ia mengekalkan tepi dan perincian garis.
Kami akan melihat satu persatu di bawah ini, pertama kali memaparkan gambar asal menggunakan kod di bawah:
import cv2 import numpy sebagai np image = cv2.imread ('elephant.jpg') cv2.imshow ('original', image) cv2.waitKey (0)
cv2.blur:
Dalam kaedah ini rata-rata dilakukan dengan membelitkan gambar dengan penapis kotak dinormalisasi, ini berlaku di bawah kotak dan menggantikan elemen pusat. Di sini saiz kotak perlu ganjil dan positif .
# cv2.blur blur = cv2.blur (gambar, (3,3)) cv2.imshow ('Averaging', blur) cv2.waitKey (0)
cv2.GussianBlur:
# cv2.GaussianBlur #daripada penapis kotak, mari kita cuba kernel Gaussian Gaussian = cv2.GaussianBlur (gambar, (7,7), 0) cv2.imshow ('Gaussian blurring', Gaussian) cv2.waitKey (0)
cv2.medianBlur:
Diperlukan median semua piksel di bawah kawasan kernel dan elemen pusat diganti dengan nilai median ini.
# cv2.medianBlur #mengambil median semua piksel di bawah kawasan kernel dan elemen pusat # diganti dengan nilai median ini. median = cv2.medianBlur (imej, 5) cv2.imshow ('median kabur', median) cv2.waitKey (0)
cv2.bilateralFilter:
Bilateral sangat berkesan dalam penghapusan bunyi sambil menjaga tepinya tajam
# cv2.bilateralFilter #Bilateral sangat berkesan dalam penghapusan bunyi sambil menjaga tepi tajam bilateral = cv2.bilateralFilter (gambar, 9,75,75) cv2.imshow ('bilateral blurring', bilateral) cv2.waitKey (0) cv2. memusnahkanAllWindows ()
Image De-noising-non Local bermaksud Denoising
import cv2 import numpy sebagai np image = cv2.imread ('elephant.jpg') cv2.imshow ('original', image) cv2.waitKey (0)
#parameter setelah Tidak ada kekuatan penapis 'h' (5-10 adalah julat yang baik) # sebelah adalah h untuk komponen warna, tetapkan nilai yang sama dengan h sekali lagi
dst = cv2.fastNlMeansDenoisingWarna (gambar, Tiada, 6,6,7,21) cv2.imshow ('Cepat bermaksud denois', dst) cv2.waitKey (0) cv2.destroyAllWindows ()
Terdapat 4 variasi kaedah bukan tempatan dalam bentuk deno
cv2.fastNlMeansDenoising () - untuk gambar skala kelabu tunggal
cv2.fastNlMeansDenoisingColored () - Gambar warna tunggal
cv2.fastNlmeansDenoisingMulti () - untuk skala skala kelabu gambar
cv2.fastNlmeansDenoisingcoloredMulti () - untuk urutan gambar berwarna
3. Menajamkan - Membalikkan kekaburan gambar
Mengasah adalah kebalikan dari pengaburan, ia menguatkan atau menekankan pada tepi pada gambar.
Kernel =,,
Matriks kernel kami berjumlah hingga satu, jadi tidak perlu menormalkan (yaitu mengalikan dengan faktor ke kecerahan yang sama seperti yang asal), jika kernel tidak dinormalisasi menjadi 1 gambar akan lebih cerah atau lebih gelap.
import cv2 import numpy sebagai np image = cv2.imread ('elephant.jpg') cv2.imshow ('original', image) cv2.waitKey (0)
kernel_sharpening = np.array (,
])
#menerapkan mengasah kernel untuk memasukkan gambar
diasah = cv2.filter2D (gambar, -1, kernel_sharpening) cv2.imshow ('gambar yang diasah', diasah) cv2.waitKey (0) cv2.destroyAllWindows ()
4. Threshoding (Binariisasi)
Thresholding adalah tindakan menukar gambar menjadi bentuk binari. Dalam opencv terdapat fungsi terpisah untuk ambang batas yang didefinisikan sebagai
Cv2.threshold (gambar, nilai ambang, Nilai maksimum, jenis ambang)
Terdapat jenis ambang berikut:
- cv2.THRESH_BINARY - paling biasa
- cv2. THRESH_BINARY_INV - paling biasa
- cv2.THRESH_TRUNC
- cv2.THRESH_TOZERO
- cv2. THRESH_TOZERO_INV
CATATAN: gambar perlu ditukar ke skala kelabu sebelum ambang
import cv2 import numpy sebagai np #load image as grayscale image = cv2.imread ('gradient.jpg', 0) cv2.imshow ('original', image) cv2.waitKey (0)
#nilai di bawah 127 pergi ke 0 (hitam), dan di atas 127 menjadi 255 (putih)
_, thresh1 = cv2.threshold (gambar, 127,255, cv2.THRESH_BINARY) cv2.imshow ('1 ambang', ambang1) cv2.waitKey (0)
#nilai di bawah 127 pergi ke 255 dan nilai di atas 127 menjadi 0 (kebalikan dari atas)
_, thresh2 = cv2.threshold (gambar, 127,255, cv2.THRESH_BINARY_INV) cv2.imshow ('2 ambang', ambang2) cv2.waitKey (0)
#nilai di atas 127 dipotong (dipegang) pada 127, argumen 255 tidak digunakan.
_, thresh3 = cv2.threshold (gambar, 127,255, cv2.THRESH_TRUNC) cv2.imshow ('3 thresh trunc', thresh3) cv2.waitKey (0)
#nilai di bawah 127 pergi ke 0, di atas 127 tidak berubah
_, thresh4 = cv2.threshold (gambar, 127,255, cv2.THRESH_TOZERO) cv2.imshow ('4 threshold', thresh4) cv2.waitKey (0)
#Reses di atas, di bawah 127 tidak berubah, di atas 127 pergi ke sifar
_, thresh5 = cv2.threshold (gambar, 127,255, cv2.THRESH_TOZERO_INV) cv2.imshow ('5 threshold', thresh5) cv2.waitKey (0) cv2.destroyAllWindows ()
5. Pelebaran, Hakisan, Pembukaan / Penutupan
Ini adalah operasi dalam bidang morfologi matematik
Dilasi - ia menambah piksel ke batas objek dalam gambar.
Hakisan - Mengeluarkan piksel pada batas objek dalam gambar.
Pembukaan - Hakisan diikuti oleh pelebaran.
Penutup - Dilatasi diikuti dengan hakisan.
Pembukaan sangat membantu dalam mengubah gambar kerana ia pertama kali menipiskan gambar dengan hakisan (menghilangkan bunyi) dan kemudian melebarkannya.
Kekeliruan dengan pelebaran dan hakisan
Kadang-kadang terdapat kekeliruan antara pelebaran dan hakisan biasanya pada gambar dengan latar belakang putih, kerana opencv menganggap latar belakang putih sebagai gambar untuk dilebarkan atau terhakis bukan gambar asal, jadi dalam hal ini hakisan berfungsi sebagai pelebaran dan sebaliknya, seperti yang ditunjukkan dalam sampel gambar ditunjukkan di bawah.
Ingat, Dilasi menambah piksel ke batas objek dalam gambar sementara Erosi menghilangkan piksel pada batas objek dalam gambar
import cv2 import numpy sebagai np image = cv2.imread ('imagecv.png', 0) cv2.imshow ('original', image) cv2.waitKey (0)
#Erosion
# mari kita tentukan ukuran kernel kita
kernel = np.ones ((5,5), np.uint8)
#sekarang kami mengikis gambar, di sini lelaran bukan kali anda mahu mengikis gambar
erosi = cv2.erode (gambar, kernel, lelaran = 1) cv2.imshow ('Erosion', erosion) cv2.waitKey (0)
#pengembangan
dilation = cv2.dilate (gambar, kernel, lelaran = 1) cv2.imshow ('dilation', dilation) cv2.waitKey (0)
#membuka, Baik untuk menghilangkan bunyi
pembukaan = cv2.morphologyEx (gambar, cv2.MORPH_OPEN, kernel) cv2.imshow ('pembukaan', pembukaan) cv2.waitKey (0)
# tutup, Baik untuk menghilangkan bunyi
menutup = cv2.morphologyEx (gambar, cv2.MORPH_CLOSE, kernel) cv2.imshow ('tutup', tutup) cv2.waitKey (0) cv2.destroyAllWindows ()
6. Pengecaman tepi dan kecerunan Imej
Pengesanan tepi adalah bidang yang sangat penting dalam penglihatan komputer, terutama ketika berurusan dengan kontur.
Tepi boleh didefinisikan sebagai sempadan gambar, sebenarnya mereka adalah tepi yang menentukan objek dalam gambar mereka menyimpan banyak maklumat mengenai gambar.
Secara formal Edges boleh didefinisikan sebagai perubahan mendadak (diskontinuiti) dalam gambar dan mereka dapat menyandikan maklumat sebanyak pixel.
Gambar di atas menunjukkan bagaimana penglihatan komputer mengenal dan mengenali gambar tersebut.
Algoritma pengesanan tepi: - Terdapat tiga jenis algoritma pengesanan tepi
- Sobel - untuk memberi penekanan pada gambar menegak atau mendatar.
- Laplacian - optimum kerana kadar ralat rendah, tepi yang jelas dan pengesanan yang tepat.
- Algoritma pengesanan Canny Edge (diturunkan oleh john.F.Canny pada tahun 1986)
1. Berlaku kekaburan Gauss
2. Mencari kecerunan intensiti gambar
3. menerapkan penekanan tidak maksimum (iaitu menghilangkan piksel yang bukan tepi).
4. Histeresis berlaku ambang (iaitu jika piksel berada di ambang atas dan bawah, ia dianggap sebagai tepi)
import cv2 import numpy sebagai np image = cv2.imread ('input.jpg', 0) tinggi, lebar = image.shape
#sobel
#keluarkan tepi sobel
sobel_x = cv2.Sobel (gambar, cv2.CV_64F, 0,1, ksize = 5) sobel_y = cv2.Sobel (gambar, cv2.CV_64F, 1,0, ksize = 5) cv2.imshow ('original', gambar) cv2.waitKey (0) cv2.imshow ('sobelx', sobel_x) cv2.waitKey (0)
#Senang
cv2.imshow ('sobely', sobel_y) cv2.waitKey (0)
sobel_OR = cv2.bitwise_or (sobel_x, sobel_y) cv2.imshow ('sobelOR', sobel_OR) cv2.waitKey (0)
#laplaian
laplacian = cv2.Laplacian (gambar, cv2.CV_64F) cv2.imshow ('Laplacian', laplacian) cv2.waitKey (0)
Algoritma pengesanan #canny edge menggunakan nilai kecerunan sebagai ambang
# dalam ceria kita perlu memberikan dua nilai: ambang1 dan ambang2.
# setiap kecerunan yang lebih besar daripada ambang 2 dianggap sebagai kelebihan.
# setiap kecerunan yang lebih besar daripada ambang 1 dianggap bukan kelebihan.
#values di antara ambang 1 dan ambang 2 adalah sama ada sebagai kelebihan atau bukan tepi-
#on bagaimana keamatan mereka yang berkaitan, dalam ini kes apa-apa nilai di bawah 60 adalah dianggap
#non tepi wheareas apa-apa nilai di atas 120 adalah dianggap tepi.
canny = cv2.Canny (gambar, 60,120) cv2.imshow ('canny', canny) cv2.waitKey (0) cv2.destroyAllWindows ()
14. Perspektif & Transformasi Afin
Mari kita mundur selangkah dan melihat transformasi afin dan bukan afin, gambar asal yang ditunjukkan di bawah ini jelas merupakan gambaran tidak afin kerana tepi akan bertemu pada suatu ketika, namun kita dapat meluruskannya dengan melengkung dan mengambil perspektif mengubah.
Untuk transformasi perspektif ini, kita memerlukan empat koordinat gambar asal dan kemudian empat titik imej output, mereka dilambangkan dengan titik_A dan titik_B. Pertama dengan bantuan titik-titik ini kita mengira matriks transformasi, M dengan bantuan fungsi getPerspectiveTransform.
Dan kemudian matriks ini diberikan kepada fungsi warpPerspective untuk menghasilkan output akhir.
Sekarang mari kita cuba mengubah Perspektif.
import cv2 import numpy sebagai np import matplotlib.pyplot as plt image = cv2.imread ('paper.jpg') cv2.imshow ('original', image) cv2.waitKey (0)
# koordinat 4 sudut gambar asal
poin_A = np.float32 (,,,])
# koordinat 4 sudut output yang diinginkan
#kami menggunakan nisbah kertas A4 1: 1.41
poin_B = np.float32 (,,,])
#gunakan dua set dua titik untuk mengira matriks transformasi prespektif , M
M = cv2.getPerspectiveTransform (points_A, points_B) warped = cv2.warpPerspective (image, M, (420,594)) cv2.imshow ('warpprespective', warped ) cv2.waitKey (0) cv2.destroyAllWindows ()
Transformasi afin lebih mudah daripada transformasi bukan afin kerana kita hanya memerlukan tiga mata untuk mendapatkan transformasi. Seluruh proses berjalan sama tetapi alih-alih transform perspektif sekarang kita mempunyai transformasi afin dan juga kita menentukan col dan baris dalam warpAffine dari fungsi bentuk dan bukannya memasukkannya secara manual.
import cv2 import numpy sebagai np import matplotlib.pyplot as plt image = cv2.imread ('box.jpg') baris, cols = image.shape cv2.imshow ('original', image) cv2.waitKey (0)
# koordinat 3 sudut gambar asal
poin_A = np.float32 (,,])
# koordinat 3 sudut output yang diinginkan
#kami menggunakan nisbah kertas A4 1: 1.41
poin_B = np.float32 (,,])
#gunakan dua set dua titik untuk mengira
matriks #transformasi Affine, M
M = cv2.getAffineTransform (points_A, points_B) warped = cv2.warpAffine (gambar, M, (cols, baris)) cv2.imshow ('warpaffine', warped ) cv2.waitKey (0) cv2.destroyAllWindows ()
8. Aplikasi Lakaran Langsung
Pertama sekali, tahniah kepada diri sendiri bahawa anda telah berjaya membuat projek mini ini setelah membaca semua fungsi manipulasi gambar di atas. Oleh itu, dalam projek mini Python OpenCV ini kita akan mempelajari beberapa konsep gelung dan fungsi baru. Sekiranya anda biasa dengan pengaturcaraan, anda mesti mempunyai idea yang lebih luas mengenai fungsi dan gelung itu. Walau bagaimanapun, dalam python konsep asas gelung dan fungsi tetap sama tetapi kaedah untuk menentukannya berubah sedikit.
Oleh itu, pada permulaan program ini, kita dapat melihat sekumpulan pernyataan tertentu yang menuju ke bawah " def sketch (gambar): " ini adalah definisi formal mengenai fungsi sekumpulan pernyataan yang bekerjasama untuk output tertentu.
Jadi sketsa ini adalah fungsi, dalam fungsi python didefinisikan oleh "def" dan diakhiri dengan tanda ":". Juga pernyataan yang diperlukan untuk berada di dalam fungsi atau anda dapat mengatakan yang diperlukan agar fungsi dapat berfungsi dengan baik, diselaraskan sisi secara automatik oleh fungsi tersebut. Oleh itu, untuk keluar dari fungsi, pernyataan perlu diselaraskan sepenuhnya. Untuk rujukan lebih lanjut, anda boleh merujuk ke google mengenai bagaimana fungsi ditentukan dalam python.
Oleh itu, dalam fungsi sketsa ini, kami telah memperkenalkan beberapa lapisan pemprosesan gambar yang digabungkan untuk memberikan output. Pertama, gambar diubah menjadi skala kelabu sehingga opencv dapat memprosesnya dengan mudah dan kemudian kabur Gaussian diterapkan pada gambar skala abu-abu sehingga dapat mengurangkan kebisingan. Kemudian bahagian tepi diekstraksi dengan bantuan algoritma pengesanan tepi cerat kemudian terbalik binari diterapkan pada gambar yang ditentukan tepi, di sini pembalikan binari juga boleh dilakukan dengan bitwise_NOT tetapi kami sengaja memilih ambang biner terbalik ini kerana ia memberikan kebebasan untuk menetapkan parameternya sehingga kita mendapat gambaran yang jelas.
Juga untuk diperhatikan bahawa fungsi mengambil gambar argumen dan mengembalikan dua argumen ret dan topeng. Sementara ret adalah Boolean memberitahu bahawa fungsi dijalankan dengan jayanya atau tidak dan topeng adalah output akhir dari fungsi tersebut iaitu gambar yang diproses.
Kemudian konsep kedua ialah mengoperasikan webcam dalam opencv yang dilakukan oleh fungsi cv2.VideoCapture (0) , yang menyimpan gambar dalam cap objek yang cap dapat dibaca dengan fungsi cap.read () , juga di sini untuk memperhatikan topi itu. read () berada di dalam loop sementara tanpa had kerana ia harus terus menangkap gambar, untuk memberikan gambaran tentang video langsung, di mana kadar bingkai video akan menjadi kadar bingkai kamera web anda yang kebanyakannya antara 24 hingga 60 fps.
cap.read () mengembalikan ret dan bingkai, di mana ret adalah Boolean yang menunjukkan bahawa fungsi itu berjaya dijalankan atau tidak dan bingkai tersebut mengandungi gambar yang diambil oleh kamera web.
Berikut adalah kod Python OpenCV yang lengkap untuk menjalankan Sketsa Langsung
import cv2 import numpy sebagai np #sketch generating function def sketch (image): #convert image to grayscale img_gray = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) # membersihkan gambar menggunakan Gaussian blur img_gray_blur = cv2.Ga (cv2.Ga 5,5), 0) #xtract tepi canny_edges = cv2.Canny (img_gray_blur, 10,70) #do anvert binarize the ret image , mask = cv2.threshold (canny_edges, 70,255, cv2.THRESH_BINARY_INV) topeng pulangan #inisialisasi kamera web, cap adalah objek yang disediakan oleh tangkapan video #it berisi Boolean yang menunjukkan jika ia berjaya (ret) #it juga mengandungi gambar yang dikumpulkan dari cap webcam (frame) = cv2.VideoCapture (0) sementara True: ret, frame = cap.read () cv2.imshow ('livesketcher', sketsa (bingkai)) jika cv2.waitKey (1) == 13: # 13 adalah kamera #release enterkey break dan tutup tetingkap, ingatlah untuk melepaskan kamera web dengan bantuan cap.release () cap.release () cv2.destroyAllWindows ()
Jadi ini adalah akhir Bahagian 2 manipulasi Imej di Python-OpenCV. Untuk mendapatkan penglihatan yang baik mengenai penglihatan komputer dan OpenCV, baca artikel sebelumnya (Bermula dengan Python OpenCV dan Manipulasi Imej di Python OpenCV (Bahagian 1) dan anda akan dapat membuat sesuatu yang menarik dengan Computer Vision.