Rumah > pembangunan bahagian belakang > Tutorial Python > CVApakah itu Imej?, Mari laraskan Kecerahan dan Kontras imej

CVApakah itu Imej?, Mari laraskan Kecerahan dan Kontras imej

Linda Hamilton
Lepaskan: 2024-12-03 11:21:14
asal
935 orang telah melayarinya

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.

Mengapa Struktur Ini Penting

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.

Melihat Imej dalam CV2

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()
Salin selepas log masuk
Salin selepas log masuk

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

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.

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

Kecerahan dan Kontras

Apakah Kecerahan dan Kontras?

  • Kecerahan merujuk kepada kecerahan atau kegelapan keseluruhan imej, ditentukan oleh keamatan piksel.
  • Kontras merujuk kepada perbezaan keamatan antara piksel berbanding dengan nilai rujukan (cth., min keamatan piksel). Ia pada asasnya mengukur sejauh mana "tajam" atau "berbeza" variasi dalam imej.

Secara matematik, kecerahan dan kontras boleh dilaraskan menggunakan formula:

imej_baru=kontras×kecerahan imej

Menggunakan Kecerahan dan Kontras dalam CV2

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:

  • alfa (kontras): Faktor penskalaan, biasanya antara 0.0 dan 3.0.
  • beta (kecerahan): Nilai offset, biasanya antara -100 dan 100

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()

Salin selepas log masuk

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

Mencipta Pelarasan Interaktif dengan Panggilan Balik

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)

  • nama trackbar: Nama bar jejak.
  • winname: Nama tetingkap OpenCV tempat bar jejak akan dipaparkan.
  • nilai: Kedudukan awal bar jejak.
  • kiraan: Nilai maksimum bar jejak.
  • onChange_function: Fungsi panggil balik yang dipanggil setiap kali nilai bar jejak berubah.

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()
Salin selepas log masuk
Salin selepas log masuk

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan