@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) для кадра.