บทนำ
การโหลดและแสดงภาพเป็นขั้นตอนพื้นฐานของ OpenCV ใช้ Class Mat และฟังก์ชันหลัก 4 ตัว: imread, namedWindow, imshow, waitKey
ฟังก์ชันหลัก
| ฟังก์ชัน | หน้าที่ | Syntax |
|---|---|---|
| Mat | โครงสร้างข้อมูลเก็บภาพ (Matrix) | Mat img; |
| namedWindow | สร้างหน้าต่างแสดงผล | namedWindow("name", flags) |
| imread | อ่านภาพจากไฟล์ | imread("path", flags) |
| imshow | แสดงภาพในหน้าต่าง | imshow("window", mat) |
| waitKey | รอคีย์บอร์ด (ms, 0=รอตลอด) | waitKey(0) |
| destroyWindow | ปิดหน้าต่างและปล่อยหน่วยความจำ | destroyWindow("name") |
Flags ของ imread
IMREAD_COLOR(1): โหลดเป็นสี 3 ช่อง (ค่าเริ่มต้น)IMREAD_GRAYSCALE(0): โหลดเป็น Grayscale 1 ช่องIMREAD_UNCHANGED(-1): โหลดรวม Alpha channel
ตัวอย่างโค้ดสมบูรณ์
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
Mat img;
namedWindow("PhotoFrame", WINDOW_AUTOSIZE);
img = imread("lakshmi.jpg", IMREAD_COLOR);
// ตรวจสอบการโหลด
if (img.empty()) {
cout << "ไม่สามารถโหลดภาพได้" << endl;
system("pause");
return -1;
}
imshow("PhotoFrame", img);
waitKey(0);
destroyWindow("PhotoFrame");
return 0;
}
การใช้งาน waitKey
waitKey(0): รอจนกว่าจะกดปุ่ม (เหมาะสำหรับรูปนิ่ง)waitKey(30): รอ 30 ms (~33 FPS, ใช้กับ Video)waitKey(1): รอ 1 ms (Real-time processing)- คืนค่า ASCII code ของปุ่มที่กด (-1 ถ้าไม่กด)
ผลลัพธ์

สรุป
ลำดับขั้นตอน: 1) ประกาศ Mat, 2) สร้าง Window, 3) imread, 4) ตรวจสอบ empty(), 5) imshow, 6) waitKey, 7) destroyWindow - ตรวจสอบ empty() เสมอเพื่อป้องกัน Crash