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

Image Array คืออะไร? อธิบายพร้อมตัวอย่าง C++

บทนำ

Image Array คือการเก็บหลายภาพในอาร์เรย์ของ Mat เพื่อจัดการหลายภาพพร้อมกัน เช่น สไลด์โชว์, เปรียบเทียบภาพ, Batch processing

ตัวอย่างโค้ด

#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;

int main() {
    // ประกาศอาร์เรย์ของ Mat ขนาด 3
    Mat images[3];
    
    namedWindow("PhotoFrame1");
    namedWindow("PhotoFrame2");
    namedWindow("PhotoFrame3");
    
    // โหลดภาพเข้าอาร์เรย์
    images[0] = imread("cat.jpg");
    images[1] = imread("dog.jpg");
    images[2] = imread("bird.jpg");
    
    // ตรวจสอบการโหลด
    for (int i = 0; i < 3; i++) {
        if (images[i].empty()) {
            cout << "โหลดภาพ index " << i << " ไม่สำเร็จ" << endl;
        }
    }
    
    // แสดงภาพ
    imshow("PhotoFrame1", images[0]);
    imshow("PhotoFrame2", images[1]);
    imshow("PhotoFrame3", images[2]);
    
    waitKey(0);
    return 0;
}

การใช้ vector<Mat> (ยืดหยุ่นกว่า)

vector<Mat> images;
images.push_back(imread("img1.jpg"));
images.push_back(imread("img2.jpg"));
// เพิ่มได้ไม่จำกัด

for (size_t i = 0; i < images.size(); i++) {
    imshow("Image " + to_string(i), images[i]);
}

การประยุกต์ใช้ Image Array

  • Slideshow: แสดงภาพทีละภาพด้วย waitKey(delay)
  • Batch Processing: ประมวลผลหลายภาพในลูป
  • Video Frames: เก็บเฟรมจากวิดีโอ
  • Image Comparison: เปรียบเทียบภาพคู่
  • Panorama Stitching: เก็บภาพหลายภาพเพื่อต่อกัน

การจัดการหน่วยความจำ

  • Mat ใช้ Reference Counting - ก็อปปี้อาร์เรย์ไม่ก็อปปี้ข้อมูลภาพ
  • ใช้ clone() ถ้าต้องการก็อปปี้ข้อมูลจริง
  • images[i].release() ปล่อยหน่วยความจำภาพที่ i

ผลลัพธ์

Image Array คืออะไร? อธิบายพร้อมตัวอย่าง C++

สรุป

Image Array (Mat array หรือ vector<Mat>) เป็นวิธีจัดการหลายภาพในโปรแกรมเดียว เหมาะสำหรับ Batch processing, Slideshow, และงานที่ต้องเปรียบเทียบ/ประมวลผลหลายภาพพร้อมกัน