Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะตั้งค่า / แก้ไขพิกเซล (ค่า RGB) ของรูปภาพโดยใช้ Java OpenCV Library ได้อย่างไร


พิกเซลเป็นองค์ประกอบที่เล็กที่สุดของภาพดิจิทัล แต่ละพิกเซลประกอบด้วยค่าอัลฟา สีแดง สีเขียว และสีน้ำเงิน ค่าพิกเซลจะถูกเก็บไว้ในพื้นที่หน่วยความจำ 32 บิตโดยมีค่า ARGB (แต่ละ 8 บิต) ในลำดับเดียวกัน ดังนั้นในการปรับเปลี่ยนสีของภาพ −

  • คุณต้องวนซ้ำแต่ละพิกเซลในภาพ

  • รับค่าพิกเซลโดยใช้เมธอด getRGB()

  • ดึงค่า ARGB จากค่าพิกเซล

  • ดำเนินการแก้ไขค่า RGB ที่จำเป็น

  • สร้างค่าพิกเซลใหม่ด้วยค่า RGB ที่ปรับเปลี่ยน

  • ตั้งค่าพิกเซลใหม่โดยใช้เมธอด setRGB()

การตั้งค่า ARGB -

สร้างอินสแตนซ์ของวัตถุสีโดยส่งค่าพิกเซลเป็นพารามิเตอร์ รับค่าสีแดง สีเขียว สีน้ำเงินโดยใช้เมธอด getRed(), getGreen() และ getBlue() ตามลำดับ หลังจากแก้ไขเพื่อตั้งค่ากลับ -

  • สร้างวัตถุสีโดยข้ามค่า RGB ใหม่เป็นพารามิเตอร์

  • รับค่าพิกเซลจากวัตถุสีโดยใช้เมธอด getRGB() ของคลาสสี

  • ตั้งค่าพิกเซลใหม่ให้กับรูปภาพโดยส่งตำแหน่ง x และ y พร้อมกับค่าพิกเซลใหม่ไปยังเมธอด setRGB()

ตัวอย่าง

<ก่อน> นำเข้า java.io.File; นำเข้า java.io.IOException; นำเข้า java.awt.Color; นำเข้า java.awt.image.BufferedImage; นำเข้า javax.imageio.ImageIO; SetPixels คลาสสาธารณะ { หลักโมฆะคงที่สาธารณะ (สตริง) args []) โยน IOException { // กำลังอ่านไฟล์รูปภาพ ไฟล์ =ไฟล์ใหม่ ("D:\\Images\\cat.jpg"); BufferedImage img =ImageIO.read (ไฟล์); สำหรับ (int y =0; y

อินพุต

จะตั้งค่า / แก้ไขพิกเซล (ค่า RGB) ของรูปภาพโดยใช้ Java OpenCV Library ได้อย่างไร

ผลลัพธ์

จะตั้งค่า / แก้ไขพิกเซล (ค่า RGB) ของรูปภาพโดยใช้ Java OpenCV Library ได้อย่างไร

การตั้งค่า ARGB โดยใช้ตัวดำเนินการกะ -

ในการดึงค่าแต่ละค่าจากพิกเซล คุณต้องเลื่อนไปทางขวาไปยังตำแหน่งเริ่มต้นของแต่ละสี เช่น 24 สำหรับอัลฟ่า 16 สำหรับสีแดง เป็นต้น และดำเนินการในระดับบิตและดำเนินการด้วย 0Xff ซึ่งจะปิดบังตัวแปรที่ปล่อย 8 บิตสุดท้ายและไม่สนใจบิตที่เหลือทั้งหมด

คุณสามารถสร้างพิกเซลขึ้นมาใหม่ได้โดยการเลื่อน ARGB ไปทางซ้ายในตำแหน่งที่เกี่ยวข้องและเข้าร่วมโดยใช้ระดับบิต OR

//ตั้งค่า RGB ใหม่p =(a<<24) | (r<<16) | (g<<8) | b;img.setRGB(x, y, p);