บทความ

กำลังแสดงโพสต์จาก กุมภาพันธ์, 2017

Opencv Camshift With C++

รูปภาพ
Opencv Camshift With C++  Camshift เป็นหนึ่งฟังก์ชั่นที่อยู่ใน openCV ซึ่ง algorithm  Camshift  จะมีการติดตามวัตถุที่มีเม็ดสีในเฟรมวีดีโอ โดยเริ่มต้นเมื่อมีการรับรูปภาพที่เป็นข้อมูลดิบเข้ามาจะมีการเปลี่ยนรูปเป็นกราฟ histogram เพื่อดูการแจกแจงของสีที่จะใช้ในการตามรอยจุดสีของวัตถุต่อไป และหาจุดกึ่งกลางและขนาดของวัตถุที่เราสนใจ  ขั้นตอนและวิธีการใช้ฟังก์ชั้น CamShift -สร้างตั้วแปล cap(0) เพื่อเปิดและใช้งานเว็บแคม -สร้าง infinity loop ทำการรับภาพจากกล้อง และแสดงผลด้วย imshow -ตั้งค่า หน้าต่างให้มีการส่งข้อมูลไปยังฟังก์ชั้น Callback เพื่อทำการสร้างจุดที่ต้องการ มาร์ค -ทำการ Mask จุดที่ต้องการ Track โดยการใช้ ฟังก์ชั้น Mouse Callback เพื่อลากและวางสี่เหลียมบริเวณที่ต้องการ Track  - เมื่อมาร์คจุดเส็ดแล้วให้โปรแกรมส่งค่าที่ มาร์คและ ทำการ Image Processing เพื่อทำการ BackProjection เเละนำไปใส่ในฟังก์ชั้น CamShift   - สร้างวงรีล้อมลอบจุดที่เป็นวัตถุ

การจัดการภาพเบื่องต้นด้วย OpenCV

รูปภาพ
การจัดการภาพเบื่องต้นด้วย OpenCV 1.การปรับ brightness และ contrast ก่อนอื่นก็มาทำความรู้จัก กับ brightness และ contrast ก่อนว่าคืออะไร Brightness (ค่าความสว่าง) ใช้ในการปรับแต่งค่าความสว่างของภาพ การปรับแต่งค่าความสว่างของภาพนั้นจะมีประสิทธิผลในกรณีที่โทนของภาพทั้งภาพนั้นออกมาในแนวที่มืดหรือสว่างจนเกินไป Contrast ค่าคอนทราสต์นั้นคือระดับความแตกต่างระหว่างส่วนที่สว่างกับส่วนที่มืดของตัวภาพการเพิ่มค่าคอนทราสต์นั้นจะส่งผลให้ความแตกต่างดังกล่าวข้างต้นนั้นชัดเจนยิ่งขึ้นซึ่งทำให้ภาพนั้นมีความคมชัดมากขึ้นด้วย ส่วนการลดค่าคอนทราสต์นั้นก็คือการลดค่าความแตกต่างระหว่างส่วนสว่างและส่วนที่มืด และเป็นการปรับความคมชัดของภาพให้ภาพซอฟท์ลงการเพิ่มค่าคอนทราสต์นั้นจะให้ผลในเรื่องของการเพิ่มความเป็นสามมิติให้กับตัวภาพ ขั้นตอนในการปรับ brightness และ contrast  - ใช้ฟังก์ชั้น createTrackbar เพื่อทำการสร้างแถบเลื่อนใช้ในการปรับแสงและคอนทราส โดยกำหนดตัวแปรที่จะสร้างการเปลียนแปลงลงไป และกำหนดค่าสูงสุดที่ปรับได้ - กำหนดให้เมื่อคีย input = Enter ให้ทำการนำข้อมูล  brightness และ contrast ที่ถูกป

histogram and histogram comparison

รูปภาพ

การสร้าง GUI ด้วย OpenCV และการวาดรูป

รูปภาพ
การสร้าง GUI ด้วย OpenCV และการวาดรูป  การสร้าง GUI บน OpenCV เป็นการวาดรูปบนรูปภาพที่เราสร้างกด และกำหนดการทำงานของรูปนั้นๆเมื่อมีการคลิกเมาส์ และใส่ฟังก์ชันการทำงานให้กับการคลิกนั้นๆ การสร้าง GUI และ Button เพื่อใช้งาน 1. สร้างหน้า Windows โดย การใช้คำสั่ง Mat3b ใน openCV ที่รับ input parameter เป็น ความสูง ความกว้าง และ สี Mat3b img(600,800,Vec3b(255,255,255)); imshow("Windows",img); 2. การสร้างปุ่มทำได้โดยการวาดปุ่มลงบน Windows ที่เราสร้างขึ้นโดยใช้ฟังก์ชัน Rect ของ openCV ซึ่งต้องใส่ input parameter เป็นตำแหน่งและขนาด(กว้าง,สูง)ให้กับฟังก์ชันนี้ สามารถใส่สีแหละข้อความให้กับปุ่มของเราได้ Button = Rect(0,0,100,30); 3. จากนั้นกำหนดการทำงานของปุ่มนั้นๆ ซึ่งจะมีขั้นตอนดังนี้ สร้างฟังก์ชันสำหรับการ click และ ปล่อยเมาส์ ใช้งาน event Mouse ของ openCV กำหนดการทำงานของการ click นั้น   if(event == EVEN_LBUTTONDOWN) หรือ if(event == EVENT_LBUTTONUP)  สำหรับการ Left click หรือการคลิกซ้ายนั้นเอง แสดงตัวอย่าง button