Как обрезать формат видео с камеры в opencv c++?

Пользователь

от mona_terry , в категории: Другие , 2 месяца назад

Как обрезать формат видео с камеры в opencv c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jensen , 2 месяца назад

@mona_terry 

Для обрезки формата видео с камеры в OpenCV (на языке C++), можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <opencv2/opencv.hpp>

int main() {
    cv::VideoCapture cap(0); // Создание объекта захвата видео (камеры)
    
    // Проверка, удалось ли открыть видео-поток
    if (!cap.isOpened()) {
        std::cout << "Ошибка при открытии камеры!" << std::endl;
        return -1;
    }
    
    // Установка размера кадра (области интереса)
    int x = 100; // координата x верхнего левого угла области
    int y = 100; // координата y верхнего левого угла области
    int width = 400; // ширина области
    int height = 300; // высота области
    
    // Цикл обработки видео-потока
    while (true) {
        cv::Mat frame;
        
        // Захват кадра с камеры
        cap >> frame;
        
        // Проверка, удалось ли получить кадр
        if (frame.empty()) {
            std::cout << "Ошибка при захвате кадра!" << std::endl;
            break;
        }
        
        // Обрезка кадра по заданным координатам и размерам
        cv::Rect roi(x, y, width, height);
        cv::Mat croppedFrame = frame(roi);
        
        // Отображение обрезанного кадра
        cv::imshow("Cropped Frame", croppedFrame);
        
        // Обработка нажатия клавиши "Esc" для выхода из цикла
        if (cv::waitKey(1) == 27)
            break;
    }
    
    // Освобождение ресурсов
    cap.release();
    cv::destroyAllWindows();
    
    return 0;
}


Данный код открывает видео-поток с подключенной камеры (устройство с ID = 0), обрезает каждый кадр согласно заданным координатам и размерам, а затем отображает обрезанный кадр в окне с заголовком "Cropped Frame". Использование функции cv::Rect позволяет задать область интереса (ROI) для кадра.