การจัดการภาพเบื่องต้นด้วย OpenCV
การจัดการภาพเบื่องต้นด้วย OpenCV
1.การปรับ brightness และ contrast
ก่อนอื่นก็มาทำความรู้จัก กับ brightness และ contrast ก่อนว่าคืออะไร
Brightness (ค่าความสว่าง) ใช้ในการปรับแต่งค่าความสว่างของภาพ การปรับแต่งค่าความสว่างของภาพนั้นจะมีประสิทธิผลในกรณีที่โทนของภาพทั้งภาพนั้นออกมาในแนวที่มืดหรือสว่างจนเกินไป
Contrast ค่าคอนทราสต์นั้นคือระดับความแตกต่างระหว่างส่วนที่สว่างกับส่วนที่มืดของตัวภาพการเพิ่มค่าคอนทราสต์นั้นจะส่งผลให้ความแตกต่างดังกล่าวข้างต้นนั้นชัดเจนยิ่งขึ้นซึ่งทำให้ภาพนั้นมีความคมชัดมากขึ้นด้วย ส่วนการลดค่าคอนทราสต์นั้นก็คือการลดค่าความแตกต่างระหว่างส่วนสว่างและส่วนที่มืด และเป็นการปรับความคมชัดของภาพให้ภาพซอฟท์ลงการเพิ่มค่าคอนทราสต์นั้นจะให้ผลในเรื่องของการเพิ่มความเป็นสามมิติให้กับตัวภาพ
ขั้นตอนในการปรับ brightness และ contrast
- ใช้ฟังก์ชั้น createTrackbar เพื่อทำการสร้างแถบเลื่อนใช้ในการปรับแสงและคอนทราส โดยกำหนดตัวแปรที่จะสร้างการเปลียนแปลงลงไป และกำหนดค่าสูงสุดที่ปรับได้
-
ผลลัพท์ที่ได้
1.2 ปรับขนาดภาพ (ย่อ ขยาย), หมุนภาพ (เป็นองศาที่ต้องการ), กลับภาพ
การย่อขยายรูปภาพ
ก่อนจะเข้าสู่เนื่อหาในการปรับรูปภาพ เราจะต้องทำการสร้าง input ของโปรแกรมก่อน โดยใช้ฟังก์ชั้น
ใน opencv จะมีฟังก์ชั่นที่ชื่อว่า resize();
โดยจะมีพารามิเตอร์คือ resize(image_input,image_output,size,ขนาด,ขนาด)
การกลับรูปภาพ
ใน opencv จะมีฟังก์ชั่นที่ชื่อว่า flip();
โดยจะมีพารามิเตอร์คือ flip(image_input,image_output, 1 หรือ 0 );
โดยที่ 1 จะเป็นการกลับภาพซ้ายขวา
ส่วน 0 จะเป็นการกลับภาพบนล่าง
หมุนภาพ (เป็นองศาที่ต้องการ)
ใน opencv จะมีฟังก์ชั่นที่ชื่อว่า warpAffine();
ก่อนอื่นต้องคำนวณจุดกรึ่งกลางของรูปภาพ ดังนี้
Point2f center(staticimg.cols / 2., staticimg.rows / 2.);
จากนั้นใช้
warpAffine(อินพุต,เอาท์พุต,getRotationMatrix2D(จุดกึ่งกลาง.องศาในการหมุน,1),InputArray,size);
การย่อขยายรูปภาพ
ก่อนจะเข้าสู่เนื่อหาในการปรับรูปภาพ เราจะต้องทำการสร้าง input ของโปรแกรมก่อน โดยใช้ฟังก์ชั้น
char k = waitKey(); และทำการ Loop การทำงานในส่วน main ให้วนลูปไว้ตลอดเพื่อทำงานสิ่งที่เราต้องการ
โดยจะมีพารามิเตอร์คือ resize(image_input,image_output,size,ขนาด,ขนาด)
การกลับรูปภาพ
ใน opencv จะมีฟังก์ชั่นที่ชื่อว่า flip();
โดยจะมีพารามิเตอร์คือ flip(image_input,image_output, 1 หรือ 0 );
โดยที่ 1 จะเป็นการกลับภาพซ้ายขวา
ส่วน 0 จะเป็นการกลับภาพบนล่าง
หมุนภาพ (เป็นองศาที่ต้องการ)
ใน opencv จะมีฟังก์ชั่นที่ชื่อว่า warpAffine();
ก่อนอื่นต้องคำนวณจุดกรึ่งกลางของรูปภาพ ดังนี้
Point2f center(staticimg.cols / 2., staticimg.rows / 2.);
จากนั้นใช้
warpAffine(อินพุต,เอาท์พุต,getRotationMatrix2D(จุดกึ่งกลาง.องศาในการหมุน,1),InputArray,size);
ความคิดเห็น
แสดงความคิดเห็น