vscode+opencv基础用法学习1

这篇具有很好参考价值的文章主要介绍了vscode+opencv基础用法学习1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

案例1:读取图片信息

如果是使用云服务器的话,由于图形界面的问题,使用cv::show来显示图片会报错

// 图片的读取和显示
// 导入opencv头文件
#include "opencv2/opencv.hpp"
#include <iostream>

int main(int argc, char** argv)
{
    // 读取图片,mat是matrix的缩写,是一个矩阵,类似与numpy ndarray
    cv::Mat image = cv::imread("./media/cat.jpg");
    // 判断是否读取成功
    if (image.empty())
    {
        std::cout << "无法读取图片 " << std::endl;
        return 1;
    }
    // 打印图片高度和宽度
    std::cout << "图片高度: " << image.rows << " 宽度: " << image.cols << std::endl;

    
    
    cv::imwrite("./output/gray.jpg", image);

    // // 显示
    // cv::imshow("原图", image);
    // cv::imshow("灰度图", gray);
    // // 等待按键
    // cv::waitKey(0);

}

注:#include "opencv2/opencv.hpp"的时候在vscode里面会显示没有这个头文件,导致运行不了。解决方案:

方法1.鼠标放到红色波浪线位置,会有一个快速修复,点开之后将OpenCV的路径添加进去

vscode+opencv基础用法学习1,C++学习,vscode,opencv,学习,c++

vscode+opencv基础用法学习1,C++学习,vscode,opencv,学习,c++

方法2.有些vscode编译器可能没有自动添加到includepath的提示,操作如下:

vscode+opencv基础用法学习1,C++学习,vscode,opencv,学习,c++

vscode+opencv基础用法学习1,C++学习,vscode,opencv,学习,c++

vscode+opencv基础用法学习1,C++学习,vscode,opencv,学习,c++

案例2:读取视频信息

注:这里需要安装gflags,gflags安装教程文章来源地址https://www.toymoban.com/news/detail-815588.html

// 导入opencv 库
#include <opencv2/opencv.hpp>
#include <iostream>
// 导入gflags 库
#include <gflags/gflags.h>
// 定义命令行参数
DEFINE_string(video, "./media/dog.mp4", "Input video"); // 视频路径

int main(int argc, char **argv)
{
    // 解析命令行参数
    gflags::ParseCommandLineFlags(&argc, &argv, true);
    // 读取视频:创建了一个VideoCapture对象,参数为视频路径
    cv::VideoCapture capture(FLAGS_video);
    // 判断视频是否读取成功,返回true表示成功
    if (!capture.isOpened())
    {
        std::cout << "无法读取视频: " << FLAGS_video << std::endl;
        return 1;
    }
    // 读取视频帧,使用Mat类型的frame存储返回的帧
    cv::Mat frame;
    // 灰度图
    cv::Mat gray_frame;
    // 循环读取视频帧
    while (true)
    {
        // 读取视频帧,使用 >> 运算符或者read()函数,他的参数是返回的帧
        capture.read(frame);
        // capture >> frame;

        // 判断是否读取成功
        if (frame.empty())
        {
            std::cout << "文件读取完毕" << std::endl;
            break;
        }
        // 转成灰度图
        cv::cvtColor(frame, gray_frame, cv::COLOR_BGR2GRAY);
        // 显示视频帧
        cv::imshow("raw frame", frame);
        cv::imshow("gray frame", gray_frame);
        // 等待按键,延迟30ms,否则视频播放太快
        int k = cv::waitKey(30);
        // 按下ESC键退出
        if (k == 27)
        {
            std::cout << "退出" << std::endl;
            break;
        }
        
    }
    return 0;

案例3:读取电脑摄像头信息

// 导入opencv 库
#include <opencv2/opencv.hpp>
#include <iostream>
// 导入gflags 库
#include <gflags/gflags.h>
// 定义命令行参数
DEFINE_int32(camera, 0, "Input camera"); // 摄像头编号

int main(int argc, char **argv)
{
    // 解析命令行参数
    gflags::ParseCommandLineFlags(&argc, &argv, true);
    // 读取视频:创建了一个VideoCapture对象,参数为摄像头编号
    cv::VideoCapture capture(FLAGS_camera);
    // 设置指定摄像头的分辨率
    int width = 640;
    int height = 480;

    // 设置摄像头宽度和高度
    capture.set(cv::CAP_PROP_FRAME_WIDTH, width);
    capture.set(cv::CAP_PROP_FRAME_HEIGHT, height);

    // 判断视频是否读取成功,返回true表示成功
    if (!capture.isOpened())
    {
        std::cout << "无法打开摄像头: " << FLAGS_camera << std::endl;
        return 1;
    }
    // 读取视频帧,使用Mat类型的frame存储返回的帧
    cv::Mat frame;
    // 写入MP4文件,参数分别是:文件名,编码格式,帧率,帧大小
    cv::VideoWriter writer("./output/record.mp4", cv::VideoWriter::fourcc('H', '2', '6', '4'), 20, cv::Size(width, height));

    // 循环读取视频帧
    while (true)
    {
        // 读取视频帧,使用 >> 运算符或者read()函数,他的参数是返回的帧
        capture.read(frame);
        // capture >> frame;
        // flip
        cv::flip(frame, frame, 1);
        // 显示视频帧
        cv::imshow("opencv demo", frame);
        // 写入视频
        writer.write(frame);
        // 等待按键,延迟30ms,否则视频播放太快
        int k = cv::waitKey(30);
        // 按下ESC键退出
        if (k == 27)
        {
            std::cout << "退出" << std::endl;
            break;
        }
    }

    return 0;
}

到了这里,关于vscode+opencv基础用法学习1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv 基础学习08-图像通道操作

    OpenCV的通道拆分功能可用于将多通道图像拆分成单独的通道,这在图像处理和计算机视觉任务中具有许多应用场景。以下是一些通道拆分的常见应用场景: 图像处理 :在某些图像处理任务中,需要对图像的不同通道进行独立处理。例如,可以对彩色图像的RGB通道进行分别处

    2024年02月16日
    浏览(41)
  • Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频

    【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程 CSDN标题里个括号对应视频的分P OpenCV+Python CSDN专栏 Gitee 项目地址 Python:3.11.5 Anaconda:23.7.4 IDE:vscode 运行环境:Windows OpenCV:4.8.1 Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置 本节课来了解以下OpenCV的简单使用

    2024年02月03日
    浏览(76)
  • 【OpenCV】读入数字图像基础操作学习笔记

    目录 读入数字图像: 窗口中显示图像: 将图像保存到本地: 窗口销毁(打开窗口就要销毁,以免影响后续十月): 等待输入: cv2.imread(所需读入的图像的完整路径(若图像在程序下的文件夹下也可直接输入图像名称),读入图像的形式) 读入图像的形式: cv2.IMREAD_CDLOR(也可写\\\'1\\\'):加载彩色图

    2024年02月12日
    浏览(41)
  • opencv/深度学习框架/图像识别零基础学习课程(代码+视频+详细pdf资料)

    学习掌握OpenCV的所有必要知识是成为一名优秀计算机视觉工程师的必经之路。 通过深入学习OpenCV的图像处理、图像分割、特征提取、目标跟踪、机器学习 等相关知识,可以让你在面试中更有信心,同时也能够更加流畅地编写高效的代码。不仅如此,了解OpenCV的扩展功能和最

    2024年02月12日
    浏览(41)
  • 【深度学习】【Opencv】【CPU】Python/C++调用onnx模型【基础】

    提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 OpenCV是一个基于BSD许可发行的跨平台计算机视觉和机器学习软件库(开源),可以运行在Linux、Windows、Android和Mac OS操作系统上。可以将pytorch中训练好的模型使用ONNX导出,再使用opencv中的dnn模块直接进行

    2024年02月04日
    浏览(43)
  • 深度学习图像处理基础工具——opencv 实战信用卡数字识别

    任务 信用卡数字识别 穿插之前学的知识点  形态学操作 模板匹配 等 总体流程与方法 1.有一个模板 2 用轮廓检测把模板中数字拿出来 外接矩形(模板和输入图像的大小要一致 )3 一系列预处理操作 问题的解决思路 1.分析准备:准备模板,读取文件——转化为灰度图——转化

    2024年04月15日
    浏览(51)
  • 【深度学习】【Opencv】【GPU】python/C++调用onnx模型【基础】

    提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 OpenCV是一个基于BSD许可发行的跨平台计算机视觉和机器学习软件库(开源),可以运行在Linux、Windows、Android和Mac OS操作系统上。可以将pytorch中训练好的模型使用ONNX导出,再使用opencv中的dnn模块直接进行

    2024年02月04日
    浏览(54)
  • opencv 基础50-图像轮廓学习03-Hu矩函数介绍及示例-cv2.HuMoments()

    Hu 矩(Hu Moments)是由计算机视觉领域的科学家Ming-Kuei Hu于1962年提出的一种图像特征描述方法。这些矩是用于描述图像形状和几何特征的不变特征,具有平移、旋转和尺度不变性,适用于图像识别、匹配和形状分析等任务。 Ming-Kuei Hu在其论文中提出了七个用于形状描述的独特

    2024年02月13日
    浏览(63)
  • 【PC电脑windows-学习样例tusb_serial_device-ESP32的USB模拟串口程序+VScode建立工程+usb组件添加+-基础样例学习】

    最为新手,想要快速入门相关设备,比如ESP32,可能最好的方式就是直接手动去敲一遍代码,而USB模拟串口其中一个应用,自己作为新手,虽然只是简单运行这个历程,但是认为依然有记录的价值。自己感觉官网样例还是有点晦涩难懂,今天我们就是学习这个样例。 ESP32说明

    2024年02月06日
    浏览(50)
  • 记录 | vscode launch.json和task.json的用途用法

    Tasks.json 按编译逻辑来说,先讲tasks.json 先贴图: \\\"label\\\": 对应launch.json中的 \\\"preLaunchTask\\\";(一定要一致,决定了launch.json之前先运行哪个配置,tasks是一个array类型,里面理论来说可以存多个配置) \\\"command\\\": 这个是编译器的命令,相当于选择了哪个编译器 (我配置了环境变量

    2024年01月25日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包