Imej digital disimpan sebagai susunan 2D piksel, yang merupakan elemen terkecil imej digital.
Setiap piksel mengandungi nilai alfa, merah, hijau dan biru Setiap nilai warna berjulat dari 0 hingga 255 dan menduduki 8 bit (2^8).
Nilai ARGB disimpan dalam 4 bait memori dalam susunan yang sama (kanan ke kiri), nilai biru dalam bit 0-7, nilai hijau dalam bit 8-15, nilai merah dalam bit 16 -23, alpha Nilai dalam bit 24-31.
Untuk mendapatkan nilai piksel daripada imej -
Gelung setiap piksel dalam imej. iaitu jalankan gelung bersarang melalui ketinggian dan lebar imej.
Gunakan kaedah getRGB() untuk mendapatkan nilai piksel bagi setiap titik.
Semerta objek Warna dengan menghantar nilai piksel sebagai parameter.
Dapatkan nilai merah, hijau dan biru menggunakan kaedah getRed(), getGreen() dan getBlue().
Berikut ialah contoh dalam Java yang membaca kandungan setiap piksel imej dan menulis nilai RGB pada fail −
rreeeimport java.io.File; import java.io.FileWriter; import java.awt.Color; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class GetPixels { public static void main(String args[])throws Exception { FileWriter writer = new FileWriter("D:\Images\pixel_values.txt"); //Reading the image File file= new File("D:\Images\cat.jpg"); BufferedImage img = ImageIO.read(file); for (int y = 0; y < img.getHeight(); y++) { for (int x = 0; x < img.getWidth(); x++) { //Retrieving contents of a pixel int pixel = img.getRGB(x,y); //Creating a Color object from pixel value Color color = new Color(pixel, true); //Retrieving the R G B values int red = color.getRed(); int green = color.getGreen(); int blue = color.getBlue(); writer.append(red+":"); writer.append(green+":"); writer.append(blue+""); writer.append("\n"); writer.flush(); } } writer.close(); System.out.println("RGB values at each pixel are stored in the specified file"); } }
Anda juga boleh menggunakan operator anjakan untuk mendapatkan semula nilai RGB daripada piksel
Untuk melakukan ini,
anjak ke kanan, gerakkan kedudukan permulaan setiap warna ke kedudukan yang sepadan, contohnya 24 untuk alfa dan 24 untuk merah 16, dsb.
Operasi anjakan yang betul boleh menjejaskan nilai saluran lain Untuk mengelakkan ini, anda perlu melakukan operasi bitwise dengan 0Xff. Ini menutup pembolehubah, menyimpan hanya 8 bit terakhir dan mengabaikan semua yang lain.
RGB values at each pixel are stored in the specified file
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan piksel (nilai RGB) imej menggunakan perpustakaan OpenCV Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!