Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menangkap Bingkai dari Kamera Rangkaian menggunakan OpenCV?

Bagaimana untuk Menangkap Bingkai dari Kamera Rangkaian menggunakan OpenCV?

Barbara Streisand
Barbara Streisandasal
2024-11-09 08:24:02813semak imbas

How to Capture Frames from Network Cameras using OpenCV?

Mengantaramuka dengan Kamera Rangkaian menggunakan OpenCV

Dalam bidang penglihatan komputer, pemerolehan imej masa nyata selalunya merupakan keperluan penting. Kamera rangkaian, menstrim kandungan video melalui pelbagai protokol, menawarkan cara yang mudah untuk mendapatkan imej. OpenCV, perpustakaan penglihatan komputer yang digunakan secara meluas, menyediakan keupayaan untuk menangkap bingkai daripada kamera sedemikian.

Pendekatan Pelaksanaan

OpenCV versi 2.0 dan ke atas menawarkan penyelesaian serba boleh untuk antara muka dengan kamera rangkaian. Kod C berikut menunjukkan cara untuk mencapai ini:

#include <cv.h>
#include <highgui.h>
#include <iostream>

int main(int, char**) {
    cv::VideoCapture vcap;
    cv::Mat image;

    // TODO: Replace with appropriate stream address
    const std::string videoStreamAddress = "rtsp://cam_address:554/live.sdp"; 

    vcap.open(videoStreamAddress);
    if (!vcap.isOpened()) {
        std::cout << "Failed to open video stream." << std::endl;
        return -1;
    }

    cv::namedWindow("Output Window");

    while (true) {
        vcap >> image;
        if (image.empty()) {
            std::cout << "No frame available." << std::endl;
            cv::waitKey(0);
            continue;
        }

        cv::imshow("Output Window", image);
        if (cv::waitKey(1) >= 0) break;
    }

    return 0;
}

Pertimbangan Penstriman H.264

Banyak kamera rangkaian moden menyokong pemampatan video H.264, yang memerlukan pengubahsuaian URL RTSP untuk penyepaduan yang betul dengan OpenCV. Rujuk dokumentasi API kamera untuk format URL tertentu. Contohnya, yang berikut menunjukkan alamat RTSP untuk kamera rangkaian Axis:

rtsp://10.10.10.10:554/axis-media/media.amp

di mana "10.10.10.10" mewakili alamat IP kamera dan "554" port RTSPnya.

Oleh menggabungkan kod yang disediakan dan mempertimbangkan pertimbangan penstriman H.264 ini, anda boleh menangkap bingkai dengan berkesan daripada kamera rangkaian menggunakan OpenCV, membuka kunci rangkaian luas pemprosesan imej dan aplikasi penglihatan komputer.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Bingkai dari Kamera Rangkaian menggunakan OpenCV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn