Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีเพิ่ม Trackbar ใน OpenCV ด้วย C++


ภาพรวม

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 ปรับภาพได้ทันที

วิธีเพิ่ม Trackbar ใน OpenCV ด้วย C++