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

วิธีโหลดและแสดงภาพใน OpenCV C++

บทนำ

การโหลดและแสดงภาพเป็นขั้นตอนพื้นฐานของ 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 ถ้าไม่กด)

ผลลัพธ์

วิธีโหลดและแสดงภาพใน OpenCV C++

สรุป

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