ภาพรวม
Trackbar (Slider) เป็น UI Control ให้ผู้ใช้ปรับค่าพารามิเตอร์แบบกราฟิก ได้แบบ Real-time ทำให้ทดลองค่าได้ง่าย ไม่ต้อง Compile ใหม่
ฟังก์ชันสร้าง Trackbar
createTrackbar(trackbarName, windowName, valuePointer, maxValue, callback)
- trackbarName: ชื่อแสดงบน Trackbar
- windowName: หน้าต่างที่ Trackbar จะปรากฏ
- valuePointer: Pointer ไปยังตัวแปร int ที่เก็บค่าปัจจุบัน
- maxValue: ค่าสูงสุด (Min = 0 เสมอ)
- callback (optional): ฟังก์ชันเรียกเมื่อค่าเปลี่ยน
โค้ดตัวอย่าง C++
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
Mat original = imread("sky.jpg");
namedWindow("Slider");
int light = 50;
createTrackbar("Brightness", "Slider", &light, 100);
int contrast = 50;
createTrackbar("Contrast", "Slider", &contrast, 100);
while (true) {
Mat edit;
int Brightness = light - 50; // -50 ถึง +50
double Contrast = contrast / 50.0; // 0.0 ถึง 2.0
original.convertTo(edit, -1, Contrast, Brightness);
imshow("Slider", edit);
waitKey(50);
}
return 0;
}
คำอธิบาย
convertTo(dst, type, alpha, beta):dst = alpha * src + beta- Alpha (Contrast): คูณค่าพิกเซล (>1 = คอนทราสต์สูง, <1 = ต่ำ)
- Beta (Brightness): บวกค่าพิกเซล (>0 = สว่าง, <0 = มืด)
- Trackbar 0-100 → Map เป็น -50 ถึง +50 และ 0.0 ถึง 2.0
ผลลัพธ์
หน้าต่าง "Slider" มี Trackbar 2 ตัว: Brightness และ Contrast ปรับภาพได้ทันที
