基于 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 分别显示原始图像和灰度图像。
相关推荐
m4Rk_4 分钟前
【论文阅读】Agent 记忆机制(26):Infini Memory——将长期记忆维护成可读写的主题文档
论文阅读·人工智能·学习·开源·github
正经人_x1 小时前
学习日记46:LISA: Reasoning Segmentation via Large Language Model
人工智能·学习·语言模型
神龙天舞20012 小时前
CMake构建学习笔记-通用的CMake构建脚本
笔记·学习
似的83510 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
fanged10 小时前
总线学习3--SPI番外(TODO)
学习
ThsPool12 小时前
【遥感学习整理 02】ENVI遥感图像处理基础:从数据读取到遥感信息产品
图像处理·人工智能·学习
05664613 小时前
Python康复训练——常用标准库
开发语言·python·学习
05664614 小时前
Python康复训练——控制流与函数
开发语言·python·学习
早睡早起身体好12316 小时前
为什么 Network 中会出现两个同名请求?——CORS 预检请求学习笔记
网络·笔记·学习·网络安全
菩提树下的打坐16 小时前
测试左移的更深一层:用 DDD 战术设计反推测试边界
学习