首页 > 后端开发 > C++ > 正文

c++怎么使用OpenCV读取和显示图片_c++ OpenCV图片读取与显示方法

裘德小鎮的故事
发布: 2025-10-22 08:24:01
原创
421人浏览过
首先检查图像是否成功加载,使用cv::imread读取图片并判断返回的Mat对象是否为空,若为空则输出错误信息;接着通过cv::imshow显示图像,需配合cv::waitKey确保窗口正常渲染。

c++怎么使用opencv读取和显示图片_c++ opencv图片读取与显示方法

在C++中使用OpenCV读取和显示图片是一个基础但重要的操作,适用于图像处理、计算机视觉等项目。要完成这个任务,需要正确配置OpenCV环境,并掌握核心函数的使用。

包含必要的头文件

使用OpenCV前,需引入相关头文件:

  • #include <opencv2/opencv.hpp>:包含OpenCV所有常用模块。
  • 常用子模块如imgcodecs、highgui、imgproc会自动包含。

读取图片:cv::imread

使用cv::imread函数从文件加载图像:

  • 函数原型:cv::Mat cv::imread(const std::string& filename, int flags)
  • 第一个参数是图片路径,支持绝对或相对路径。
  • 第二个参数指定读取方式,如:
    • cv::IMREAD_COLOR:以三通道彩色图读取(默认)。
    • cv::IMREAD_GRAYSCALE:转为灰度图。
    • cv::IMREAD_UNCHANGED:保留透明通道(如PNG)。
  • 返回值为cv::Mat类型,若路径错误或文件不存在,返回空矩阵(.empty() 为 true)。

示例代码:

立即学习C++免费学习笔记(深入)”;

cv::Mat image = cv::imread("example.jpg", cv::IMREAD_COLOR);
if (image.empty()) {
    std::cerr << "无法读取图片,请检查路径!" << std::endl;
    return -1;
}
登录后复制

显示图片:cv::imshow 和 cv::waitKey

使用cv::imshow在窗口中显示图像:

芦笋演示
芦笋演示

一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。

芦笋演示 34
查看详情 芦笋演示
  • 函数原型:void cv::imshow(const std::string& winname, cv::InputArray mat)
  • 第一个参数是窗口名称,可自定义。
  • 第二个参数是要显示的Mat对象。

显示后需调用cv::waitKey等待按键事件,否则窗口可能闪退:

  • cv::waitKey(0):无限等待任意键按下。
  • cv::waitKey(1):常用于视频循环,等待1毫秒。
  • 返回值为按下的键值,可用于交互控制。

完整显示流程:

cv::imshow("图片显示", image);
cv::waitKey(0); // 等待按键后关闭
cv::destroyAllWindows(); // 关闭所有窗口
登录后复制

完整示例代码

整合上述步骤的一个简单程序:

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

int main() {
    cv::Mat img = cv::imread("test.jpg");
    
    if (img.empty()) {
        std::cout << "图片加载失败!" << std::endl;
        return -1;
    }

    cv::imshow("原图", img);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}
登录后复制

确保图片路径正确,且OpenCV已正确链接到项目中(编译时添加相应的库路径和依赖)。

基本上就这些,掌握 imread、imshow 和 waitKey 就能实现基本的图像加载与展示功能。

以上就是c++++怎么使用OpenCV读取和显示图片_c++ OpenCV图片读取与显示方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号