首先检查图像是否成功加载,使用cv::imread读取图片并判断返回的Mat对象是否为空,若为空则输出错误信息;接着通过cv::imshow显示图像,需配合cv::waitKey确保窗口正常渲染。

在C++中使用OpenCV读取和显示图片是一个基础但重要的操作,适用于图像处理、计算机视觉等项目。要完成这个任务,需要正确配置OpenCV环境,并掌握核心函数的使用。
包含必要的头文件
使用OpenCV前,需引入相关头文件:
-
#include
:包含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在窗口中显示图像:
- 函数原型: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#include 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 就能实现基本的图像加载与展示功能。










