Dalam konteks CV2 dalam Python, apabila anda membaca imej, ia disimpan sebagai tatasusunan 2D atau 3D koordinat Y dan X dengan nilai uint8 yang menunjukkan warna dan kecerahan imej. Istilah uint8 merujuk kepada jenis data integer tidak bertanda 8-bit yang berjulat dari 0 hingga 255. Ini, digabungkan dengan 3 saluran untuk Merah, Hijau dan Biru (RGB), membentuk imej berwarna.
Jika anda mula mengubah bahagian imej seperti tatasusunan biasa (cth., membahagikannya dengan 3), anda mungkin kehilangan format ini. Sebagai contoh, nilai piksel mungkin berada di luar julat 0 hingga 255, menyebabkan imej menjadi tidak boleh digunakan. Memahami struktur ini adalah penting untuk memanipulasi imej dengan betul.
Dalam pustaka Python CV2, anda boleh melihat imej dengan mudah menggunakan coretan kod berikut:
#pip install opencv-python # if not already installed import cv2 # Load an image image = cv2.imread('./test.png') # Display the image in a window cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows()
Kod di atas akan membuka tetingkap pop timbul yang memaparkan imej pada komputer anda. Jangan ragu untuk menambah url pada imej anda sendiri untuk diuji. Anda kemudiannya boleh mengezum masuk untuk memerhatikan nilai RGB aras piksel imej. Fungsi asas ini ialah titik permulaan yang bagus untuk meneroka pemprosesan imej.
Secara matematik, kecerahan dan kontras boleh dilaraskan menggunakan formula:
imej_baru=kontras×kecerahan imej
Fungsi cv2.convertScaleAbs() dalam OpenCV mengautomasikan proses ini. Ia menggunakan formula di atas sambil memastikan nilai piksel kekal dalam julat 0 hingga 255.
Begini cara ia berfungsi:
Contoh Penggunaan:
new_image = cv2.convertScaleAbs(imej, alpha=kontras, beta=kecerahan)
Ini membolehkan kami mengubah suai kecerahan dan kontras dengan mudah tanpa memotong nilai piksel secara manual.
image = cv2.imread('./test.png') cv2.namedWindow('Adjustments') contrast=0.8 brightness=89 image=cv2.convertScaleAbs(image, alpha=contrast, beta=brightness) cv2.imshow('Adjustments', image) cv2.waitKey(0) cv2.destroyAllWindows()
Walaupun pelarasan sekali berguna, pada kebanyakan masa, kami mahu mengubah suai kecerahan dan kontras secara interaktif. OpenCV membolehkan kami mencapai ini menggunakan bar jejak.
Bar jejak boleh dibuat dengan cv2.createTrackbar(), yang membolehkan kami melaraskan nilai secara dinamik. Sintaks umum ialah:
cv2.createTrackbar(trackbarname, winname, value, count, onChange_function)
Bar jejak ini kemudiannya boleh dipanggil dalam onChange_function dengan;
cv2.getTrackbarPos(trackbarname, winname)
・trackbarname: Nama trackbar
・ Winname: Nama tetingkap OpenCV tempat bar jejak akan dipaparkan.
Untuk melaraskan kedua-dua kecerahan dan kontras, kami memerlukan dua bar jejak.
#pip install opencv-python # if not already installed import cv2 # Load an image image = cv2.imread('./test.png') # Display the image in a window cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows()
Melaraskan kontras dan peluncur kecerahan mencetuskan fungsi on_change, yang membaca nilai daripada bar jejak menggunakan cv2.getTrackbarPos(). Nilai ini kemudiannya digunakan pada imej menggunakan fungsi cv2.convertScaleAbs dan imej yang dikemas kini dipaparkan dalam masa nyata.
Untuk menjadikan apl lebih mesra pengguna, saya menambah coretan ringkas pada penghujung untuk membolehkan pengguna keluar dengan menekan kekunci x. Ini menangani isu biasa dengan OpenCV, di mana menutup tetingkap tidak selalu menghalang kod daripada berjalan. Dengan melaksanakan ini, apl memastikan jalan keluar yang bersih tanpa berlengah-lengah proses.
Atas ialah kandungan terperinci CVApakah itu Imej?, Mari laraskan Kecerahan dan Kontras imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!