บทนำ
รูปภาพมีบทบาทสำคัญในด้านต่างๆ รวมถึงคอมพิวเตอร์วิทัศน์ กราฟิก และการถ่ายภาพ บ่อยครั้งที่จำเป็นต้องจัดการและแปลงรูปภาพเพื่อปรับปรุงรูปลักษณ์ ดึงข้อมูลที่เป็นประโยชน์ หรือเตรียมสำหรับการวิเคราะห์เพิ่มเติม ในบล็อกนี้ เราจะสำรวจเทคนิคการแปลงรูปภาพยอดนิยมบางส่วน และจัดเตรียมตัวอย่างโค้ดสำหรับแต่ละเทคนิคโดยใช้ 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 นี่เป็นบทสรุปโดยย่อของเทคนิคที่ครอบคลุม:
- การหมุนรูปภาพ: โค้ดสาธิตวิธีการหมุนรูปภาพตามมุมที่กำหนดโดยใช้ฟังก์ชัน
cv2.getRotationMatrix2D
และcv2.warpAffine
- การปรับขนาดรูปภาพ: โค้ดนี้แสดงวิธีการปรับขนาดรูปภาพให้เป็นขนาดที่ต้องการโดยใช้ฟังก์ชัน
cv2.resize
ช่วยให้สามารถปรับขนาดขึ้นหรือลงตามเปอร์เซ็นต์ขนาดที่กำหนด - การแปลรูปภาพ: โค้ดแสดงวิธีการเลื่อนพิกเซลของรูปภาพในแนวนอนและแนวตั้งโดยใช้ฟังก์ชัน
cv2.warpAffine
และเมทริกซ์การแปล
ด้วยการทำความเข้าใจและนำเทคนิคการแปลงรูปภาพเหล่านี้ไปใช้ คุณสามารถจัดการและแก้ไขรูปภาพให้เหมาะกับความต้องการเฉพาะของคุณได้ ไม่ว่าคุณจะแก้ไขการวางแนวของภาพ กำหนดขนาดมาตรฐาน หรือจำลองการเคลื่อนไหวของกล้อง เทคนิคเหล่านี้จะเป็นรากฐานที่มั่นคงสำหรับการทำงานกับภาพในคอมพิวเตอร์วิทัศน์ กราฟิก และสาขาที่เกี่ยวข้อง
อย่าลืมทดลองใช้พารามิเตอร์ต่างๆ สำรวจฟังก์ชันเพิ่มเติมที่นำเสนอโดยไลบรารี เช่น OpenCV และปรับเทคนิคเหล่านี้ให้เข้ากับโปรเจ็กต์ของคุณ ด้วยการฝึกฝนและความคิดสร้างสรรค์ คุณสามารถใช้ประโยชน์จากการแปลงรูปภาพเพื่อปลดล็อกความเป็นไปได้ใหม่ๆ และปรับปรุงเวิร์กโฟลว์การประมวลผลรูปภาพของคุณ