OpenCV视频I/O(12)视频采集类VideoCapture之设置视频捕获对象在操作过程中遇到错误时是否抛出异常函数setExceptionMode()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

切换异常模式
方法在不成功时抛出异常而不是返回错误代码

在 OpenCV 中,cv::VideoCapture::setExceptionMode 函数用于设置视频捕获对象在操作过程中遇到错误时是否抛出异常。该函数允许你控制在视频捕获过程中遇到错误时的行为。

函数原型

void cv::VideoCapture::setExceptionMode	
(
	bool 	enable
)	

参数

  • 参数enable (bool):
    • 描述:一个布尔值,用于指定是否启用异常抛出模式。
    • 如果 enable 为 true,则当 VideoCapture 对象在执行任何操作时遇到错误,将会抛出异常。
    • 如果 enable 为 false,则不会抛出异常,而是采用其他错误处理机制(例如返回错误码)。

示例代码

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 创建一个 VideoCapture 对象
    cv::VideoCapture cap;

    // 定义摄像头设备索引
    int cameraIndex = 0; // 第一个摄像头设备

    // 设置异常处理模式为抛出异常
    cap.setExceptionMode(true);

    // 尝试打开摄像头设备
    if (!cap.open(cameraIndex, cv::CAP_ANY)) {
        std::cout << "Failed to open camera at index: " << cameraIndex << std::endl;
        return -1;
    }

    // 检查是否成功打开了摄像头设备
    if (!cap.isOpened()) {
        std::cout << "Error opening camera at index: " << cameraIndex << std::endl;
        return -1;
    }

    // 设置帧宽度和高度
    cap.set(cv::CAP_PROP_FRAME_WIDTH, 640);
    cap.set(cv::CAP_PROP_FRAME_HEIGHT, 480);

    // 循环读取并显示视频帧
    while (true) {
        // 创建一个 Mat 对象来存储视频帧
        cv::Mat frame;

        // 从视频流中读取下一帧
        if (!cap.read(frame)) {
            std::cout << "No frame grabbed." << std::endl;
            break;
        }

        // 检查是否成功读取到了帧
        if (frame.empty()) {
            std::cout << "Frame is empty." << std::endl;
            break;
        }

        // 显示视频帧
        cv::imshow("Camera Stream", frame);

        // 按 'q' 键退出循环
        if (cv::waitKey(1) == 'q') {
            break;
        }
    }

    // 释放资源
    cap.release();
    cv::destroyAllWindows();

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值