บทนำ

รูปภาพมีบทบาทสำคัญในด้านต่างๆ รวมถึงคอมพิวเตอร์วิทัศน์ กราฟิก และการถ่ายภาพ บ่อยครั้งที่จำเป็นต้องจัดการและแปลงรูปภาพเพื่อปรับปรุงรูปลักษณ์ ดึงข้อมูลที่เป็นประโยชน์ หรือเตรียมสำหรับการวิเคราะห์เพิ่มเติม ในบล็อกนี้ เราจะสำรวจเทคนิคการแปลงรูปภาพยอดนิยมบางส่วน และจัดเตรียมตัวอย่างโค้ดสำหรับแต่ละเทคนิคโดยใช้ Python และ OpenCV ซึ่งเป็นไลบรารีคอมพิวเตอร์วิทัศน์ที่ใช้กันอย่างแพร่หลาย

ภาพ:

1. การหมุนภาพ

การหมุนภาพเกี่ยวข้องกับการหมุนภาพตามมุมที่กำหนด โดยทั่วไปเทคนิคนี้ใช้เพื่อแก้ไขการวางแนวของภาพ จัดแนววัตถุ หรือสร้างเอฟเฟ็กต์ที่ดึงดูดสายตา

มาดูวิธีการหมุนภาพโดยใช้ OpenCV กัน:

import cv2
image = cv2.imread(r"D:\cDrive_user\Downloads\pexels-cats-coming-1444321.jpg")
num_rows, num_cols = image.shape[:2]
img_rotation = cv2.warpAffine(image, cv2.getRotationMatrix2D((num_cols/2, num_rows/2), 90, 0.6), (num_cols, num_rows))
matrix = cv2.getRotationMatrix2D((num_cols/2, num_rows/2), 30, 0.7)
cv2_imshow(img_rotation)

เอาท์พุท:

ข้อมูลโค้ดที่ให้มาข้างต้นสาธิตวิธีการหมุนรูปภาพโดยใช้ OpenCV โดยจะโหลดไฟล์รูปภาพ คำนวณจำนวนแถวและคอลัมน์ในภาพ และสร้างเมทริกซ์การหมุนตามมุมและขนาดที่ระบุ จากนั้นเมทริกซ์การหมุนจะถูกนำไปใช้กับรูปภาพโดยใช้ฟังก์ชัน cv2.warpAffine ส่งผลให้รูปภาพถูกหมุน ขั้นตอนสุดท้ายจะแสดงภาพที่หมุน

2. การปรับขนาดภาพ

การปรับขนาดรูปภาพเกี่ยวข้องกับการปรับขนาดรูปภาพให้มีขนาดที่ต้องการ เทคนิคนี้มีประโยชน์ในการกำหนดขนาดรูปภาพให้เป็นมาตรฐาน ลดการใช้หน่วยความจำ หรือเตรียมรูปภาพสำหรับแอปพลิเคชันเฉพาะ

นี่เป็นวิธีการที่ใช้กันทั่วไปในด้านคอมพิวเตอร์วิทัศน์และการประมวลผลภาพ โดยที่เราพยายามปรับขนาดภาพตามความต้องการ โดยคร่าวแล้ว เราทำสองสิ่งในการปรับขนาดภาพ: เราจะขยายรูปภาพหรือย่อรูปภาพ ใน OpenCV เรามีฟังก์ชันปรับขนาด เมื่อใช้สิ่งนี้ เราก็จะสามารถปรับขนาดของภาพได้

ต่อไปนี้คือวิธีที่คุณสามารถปรับขนาดภาพโดยใช้ OpenCV:

ภาพย่อ :

img_shrinked = cv2.resize(image,(350, 300), interpolation = cv2.INTER_AREA)
cv2_imshow(img_shrinked)

เอาท์พุต :

ภาพที่ขยาย:

img_enlarged = cv2.resize(img_shrinked,None,fx=1.5, fy=1.5, interpolation = cv2.INTER_CUBIC)
cv2_imshow(img_enlarged)

เอาท์พุท:

3. การแปลรูปภาพ

การแปลรูปภาพเกี่ยวข้องกับการเลื่อนพิกเซลของรูปภาพในทิศทางแนวนอนและแนวตั้ง เทคนิคนี้มีประโยชน์สำหรับการแก้ไขปัญหาการวางแนว การสร้างภาพโมเสค หรือการจำลองการเคลื่อนไหวของกล้อง

มาดูวิธีการแปลรูปภาพโดยใช้ OpenCV กัน:

num_rows, num_cols = image.shape[:2]
translation_matrix = np.float32([ [1,0,70], [0,1,110] ])
img_translation = cv2.warpAffine(image, translation_matrix, (num_cols, num_rows), cv2.INTER_LINEAR)
translation_matrix
cv2_imshow(img_translation)

เอาท์พุท:

RGB เป็น BGR :

rgb = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
cv2_imshow(rgb)

เอาท์พุต :

RGB ถึงระดับสีเทา

gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
cv2_imshow(gray)
print(gray.shape)

บทสรุป:

โดยสรุป บล็อกนี้ได้สำรวจเทคนิคการแปลงรูปภาพที่จำเป็นและจัดเตรียมโค้ดโค้ดสำหรับแต่ละเทคนิคโดยใช้ Python และ OpenCV นี่เป็นบทสรุปโดยย่อของเทคนิคที่ครอบคลุม:

  1. การหมุนรูปภาพ: โค้ดสาธิตวิธีการหมุนรูปภาพตามมุมที่กำหนดโดยใช้ฟังก์ชัน cv2.getRotationMatrix2D และ cv2.warpAffine
  2. การปรับขนาดรูปภาพ: โค้ดนี้แสดงวิธีการปรับขนาดรูปภาพให้เป็นขนาดที่ต้องการโดยใช้ฟังก์ชัน cv2.resize ช่วยให้สามารถปรับขนาดขึ้นหรือลงตามเปอร์เซ็นต์ขนาดที่กำหนด
  3. การแปลรูปภาพ: โค้ดแสดงวิธีการเลื่อนพิกเซลของรูปภาพในแนวนอนและแนวตั้งโดยใช้ฟังก์ชัน cv2.warpAffine และเมทริกซ์การแปล

ด้วยการทำความเข้าใจและนำเทคนิคการแปลงรูปภาพเหล่านี้ไปใช้ คุณสามารถจัดการและแก้ไขรูปภาพให้เหมาะกับความต้องการเฉพาะของคุณได้ ไม่ว่าคุณจะแก้ไขการวางแนวของภาพ กำหนดขนาดมาตรฐาน หรือจำลองการเคลื่อนไหวของกล้อง เทคนิคเหล่านี้จะเป็นรากฐานที่มั่นคงสำหรับการทำงานกับภาพในคอมพิวเตอร์วิทัศน์ กราฟิก และสาขาที่เกี่ยวข้อง

อย่าลืมทดลองใช้พารามิเตอร์ต่างๆ สำรวจฟังก์ชันเพิ่มเติมที่นำเสนอโดยไลบรารี เช่น OpenCV และปรับเทคนิคเหล่านี้ให้เข้ากับโปรเจ็กต์ของคุณ ด้วยการฝึกฝนและความคิดสร้างสรรค์ คุณสามารถใช้ประโยชน์จากการแปลงรูปภาพเพื่อปลดล็อกความเป็นไปได้ใหม่ๆ และปรับปรุงเวิร์กโฟลว์การประมวลผลรูปภาพของคุณ