首页 > 编程语言 >opencv读取摄像头并显示的C++代码

opencv读取摄像头并显示的C++代码

时间:2023-03-15 12:55:41浏览次数:28  
标签:窗口 读取 cap C++ opencv VideoCapture 图像 摄像头

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

using namespace cv;
using namespace std;

int main()
{
    // 创建VideoCapture对象,参数为0表示打开默认摄像头
    VideoCapture cap(0);

    // 检查摄像头是否成功打开
    if (!cap.isOpened())
    {
        cout << "Failed to open camera!" << endl;
        return -1;
    }

    // 创建窗口
    namedWindow("Camera", WINDOW_NORMAL);

    // 循环读取摄像头捕捉到的帧并显示
    while (true)
    {
        // 读取一帧图像
        Mat frame;
        cap.read(frame);

        // 检查是否成功读取到一帧图像
        if (frame.empty())
        {
            cout << "Failed to read frame from camera!" << endl;
            break;
        }

        // 显示图像
        imshow("Camera", frame);

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

    // 释放摄像头资源和所有窗口
    cap.release();
    destroyAllWindows();

    return 0;
}

解释一下代码的主要部分:

  1. 首先包含OpenCV库的头文件,并使用命名空间cv和std。

  2. 创建一个VideoCapture对象,并将参数设置为0,表示打开默认的摄像头。

  3. 检查摄像头是否成功打开。如果失败,则输出错误消息并返回-1。

  4. 创建一个名为"Camera"的窗口。

  5. 循环读取摄像头捕捉到的帧,并显示在窗口中。

  6. 读取一帧图像。使用cap.read函数读取一帧图像,并将其存储在Mat对象frame中。

  7. 检查是否成功读取到一帧图像。如果失败,则输出错误消息并退出循环。

  8. 显示图像。使用imshow函数显示图像,并指定窗口标题。

  9. 等待按键输入。使用waitKey函数等待用户按下按键,并返回按下的键码。

  10. 按下q键退出循环(这个好像不能用)。

  11. 释放摄像头资源和所有窗口。在程序结束时,使用cap.release函数释放摄像头资源,并使用destroyAllWindows函数关闭所有窗口。

  12. 第一次写博客希望大家见谅。

标签:窗口,读取,cap,C++,opencv,VideoCapture,图像,摄像头
From: https://www.cnblogs.com/shlmqq/p/17218090.html

相关文章

  • OpenCV 图像的矩moments()
    1.概述图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、......
  • C++/Qt网络通讯模块设计与实现(二)
    上一节给出了C++/Qt网络通讯模块的设计类图,以及各类的作用描述,详见C++Qt网络通讯模块设计与实现(一),这节讲述类的具体实现,源码之前,了无秘密,让大家彻底从原理上明白。SNetC......
  • c++ pass function as argument
    //util.cpp#include"model/util.h"voidutil::invoke_func_args(constutil&ul,constint&len){utilulcopy=ul;pass_func_args(ulcopy,len,&get_str_u......
  • C++/Qt网络通讯模块设计与实现(一)
    模块介绍网络通讯模块负责网络数据包的发送、接收以及对外提供功能调用以及接口回调,其不进行产品业务的实现。传输协议基于TCP可靠传输。用途平台化复用类图详细讲......
  • 一个轻量级简单易用的c++请求库
    Sion是一个轻量级简单易用的c++请求库仅单个头文件,自带std::string的扩展跨平台,支持linux,win,mac...有着良好的异步支持,可以选择以自己喜欢的方式发送异步请求,cal......
  • c++11多线程入门<学习记录>
    最近学习了c++多线程相关知识,也算是对这方面内容的入门视频链接c++11并发与多线程视频课程看了大概两周,简单进行总结参考文章C++11并发与多线程PS:c++11提供了标准的可......
  • C++ STL标准模板库使用
    C++STL标准模板库使用在线手册参考C++STL(标准模板库)是一组标准的C++库,包含了许多常用的数据结构和算法,可大大提高开发效率。以下是常用的STL组件:容器(Container......
  • opencv-python笔记(1)
    openCV笔记图像灰度图像​ 0代表纯黑色,255代表白色(类似亮度)通道拆分通过索引拆分:importcv2lena=cv2.imread("lenacolor.png")cv2.imshow("lena1",lena)b=lena[:......
  • c++ noexcept与constexpr解析
    文章目录​​1.noexcept无需抛出异常​​​​2.constexpr静态编译关键字​​​​编译期常量​​​​类中constexpr​​1.noexcept无需抛出异常在C++中使用noexcept来标识......
  • C++ 哈希表的总结与例题
    文章目录​​C++STL​​​​哈希表​​​​设计哈希集合​​​​设计哈希映射​​​​哈希集合​​​​例题一:只出现一次的数字​​​​例题二:快乐数​​​​哈希映射​​​......