基于 OpenCV 的图像与视频处理

基于 OpenCV 的图像处理

一、实验背景

OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、视频分析、目标检测等领域。通过学习 OpenCV,可以快速实现图像和视频的处理功能,为复杂的应用开发

奠定基础。本实验旨在通过实际代码示例,掌握 OpenCV 的基本功能和使用方法。

二、实验目的

  1. 学习如何使用 OpenCV 进行图像处理。

  2. 掌握 OpenCV 的视频读取和播放功能。

  3. 实现视频录制功能,并理解视频流的处理逻辑。

三、实验内容

  1. 创建一个代码文件夹 code ,并在其中创建 test.cpp 文件。

  2. 将以下代码复制到 test.cpp 文件中:

    #include <opencv2/opencv.hpp>
    using namespace cv;
    using namespace std;

    int main(int argc, char** argv) {
    // 加载图像
    Mat image = imread("lena.jpg", IMREAD_COLOR); // 默认加载彩色图像

    复制代码
     // 检查图像是否成功加载
     if (image.empty()) {
         cout << "无法加载图像!请检查文件路径。" << endl;
         return -1;
     }
    
     // 创建一个用于存储灰度图像的 Mat 对象
     Mat gray_image;
    
     // 使用 OpenCV 的 cvtColor 函数将彩色图像转换为灰度图像
     cvtColor(image, gray_image, COLOR_BGR2GRAY);
    
     // 保存灰度图像
     imwrite("gray_image.png", gray_image);
    
     // 显示原始图像和灰度图像
     namedWindow("Original Image", WINDOW_AUTOSIZE);
     imshow("Original Image", image);
    
     namedWindow("Gray Image", WINDOW_AUTOSIZE);
     imshow("Gray Image", gray_image);
    
     // 等待用户按键后关闭窗口
     waitKey(0);
    
     return 0;

    }

3.编译代码

复制代码
g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`

4.准备一张名为lena.jpg的图片,与代码文件放在同一目录下。

5.运行程序

复制代码
./test

四、实验结果

  • 程序读取lena.jpg图片,对图片进行径向渐变处理后,生成新的图片gray_image.png
  • 定义一个 Mat 对象 gray_image,用于存储转换后的灰度图像。
  • 使用 cvtColor 函数将彩色图像转换为灰度图像。
  • 参数 COLOR_BGR2GRAY 表示从 BGR 颜色空间转换到灰度颜色空间。
  • 使用 namedWindowimshow 分别显示原始图像和灰度图像。

COLOR_BGR2GRAY 表示从 BGR 颜色空间转换到灰度颜色空间。

  • 使用 namedWindowimshow 分别显示原始图像和灰度图像。
相关推荐
小风吹啊吹~1 分钟前
通过时态图学习意图驱动识别足球控球比赛阶段 论文详解
学习·transformer·论文笔记·gan·足球战术·战术分析系统
阿i索19 分钟前
【C++学习笔记】【基础】4.string类(2)——模拟实现
c++·笔记·学习
袁小皮皮不皮1 小时前
6.HCIP OSPF域间防环机制与虚链路
服务器·网络·笔记·网络协议·学习·智能路由器
一口吃俩胖子1 小时前
【脉宽调制DCDC功率变换学习笔记026】补偿设计和闭环性能
笔记·学习
三品吉他手会点灯1 小时前
C语言学习笔记 - 48.流程控制2 - 什么是流程控制
c语言·开发语言·笔记·学习
لا معنى له2 小时前
SF2Net: Sequence Feature Fusion Network for Palmprint Verification
人工智能·笔记·学习·机器学习
吃着火锅x唱着歌2 小时前
深度探索C++对象模型 学习笔记 第六章 执行期语意学(1)
c++·笔记·学习
xxwl5852 小时前
工作室小测的部分记录
c++·学习·算法
程序员zgh2 小时前
C++ 万能引用与完美转发
c语言·开发语言·c++·经验分享·学习
lazy H3 小时前
Maven 依赖爆红怎么办?IDEA 中 Maven 项目常见问题和解决方法总结
java·后端·学习·maven·intellij-idea