0

0

c++如何操作opencv图像处理_c++ 图像加载、显示与灰度化处理【实战】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-01-07 15:29:02

|

879人浏览过

|

来源于php中文网

原创

cv::imread加载失败主因是路径或编码问题:Windows下中文路径、相对路径错误、扩展名大小写不符均致返回空Mat;需用img.empty()检查,优先用绝对路径;中文路径须改用cv::imdecode+std::ifstream二进制读取。

c++如何操作opencv图像处理_c++ 图像加载、显示与灰度化处理【实战】

cv::imread 加载图像失败的常见原因

直接用 cv::imread 读不到图,八成不是代码写错,而是路径或编码问题。Windows 下中文路径、相对路径没对准当前工作目录、文件扩展名大小写不一致(比如 "IMG.JPG" 但代码里写 "img.jpg"),都会让返回值是空 cv::Mat

  • if (img.empty()) 检查加载结果,别跳过这步
  • 绝对路径更可靠,测试时可先写成 "C:/test/lena.png"(注意斜杠用正斜杠或双反斜杠)
  • OpenCV 默认不支持中文路径,若必须用,改用 cv::imdecode + std::ifstream 二进制读取绕过

cv::imshow 窗口一闪而逝或报错 -215

cv::imshow 报错 "OpenCV(4.x): error: (-215) ... in function 'cv::imshow',基本等于传了空 cv::Mat;窗口闪退则是因为没调 cv::waitKey()

Beautiful.ai
Beautiful.ai

AI在线创建幻灯片

下载
  • 确保 cv::imshow("window", img)img 已成功加载且非空
  • cv::waitKey(0) 表示无限等待按键,cv::waitKey(1) 常用于视频循环,别漏掉
  • 多窗口时,每个 cv::imshow 后不需立刻 waitKey,但最后必须有,否则主窗口可能不显示

cv::cvtColor 转灰度图时 BGR 和 RGB 的陷阱

OpenCV 默认按 BGR 顺序读图,不是 RGB。用 cv::cvtColor(img, gray, cv::COLOR_RGB2GRAY) 会出错或结果发灰——因为输入其实是 BGR,却当成 RGB 转。

  • 正确写法是 cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY)
  • 如果图是从 Qt / Pillow 等其他库传入(它们用 RGB),才考虑 RGB2GRAY,否则一律 BGR 开头
  • 灰度图是单通道 CV_8UC1,后续做阈值、边缘检测前务必确认 gray.channels() == 1
int main() {
    cv::Mat img = cv::imread("lena.jpg");
    if (img.empty()) {
        std::cerr << "Failed to load image\n";
        return -1;
    }

    cv::Mat gray;
    cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY); // 注意这里是 BGR2GRAY

    cv::imshow("Original", img);
    cv::imshow("Grayscale", gray);
    cv::waitKey(0); // 必须有
    return 0;
}
实际跑通的关键不在语法多漂亮,而在每一步都检查中间状态:加载是否为空、通道数是否符合预期、转灰度后数据类型是否仍是 CV_8U。这些点漏一个,后面所有操作都可能静默失败。

相关专题

更多
视频后缀名都有哪些
视频后缀名都有哪些

视频后缀名都有avi、mpg、mpeg、rm、rmvb、flv、wmv、mov、mkv、ASF、M1V、M2V、MPE、QT、VOB、RA、RMJ、RMS、RAM、等等。更多关于视频后缀名的相关知识,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

3392

2023.10.31

C++ Qt图形开发
C++ Qt图形开发

本专题专注于 C++ Qt框架在图形界面开发中的应用,系统讲解窗口设计、信号与槽机制、界面布局、事件处理、数据库连接与跨平台打包等核心技能,通过多个桌面应用项目实战,帮助学员快速掌握 Qt 框架并独立完成跨平台GUI软件的开发。

68

2025.08.15

C++ 图形界面开发基础(Qt方向)
C++ 图形界面开发基础(Qt方向)

本专题系统讲解 使用 C++ 与 Qt 进行图形界面(GUI)开发的核心技能,内容涵盖 Qt 项目结构、窗口组件、信号与槽机制、事件处理、布局管理、资源管理,以及跨平台编译与打包流程。通过多个小型桌面应用实战案例,帮助学习者掌握从界面设计到功能实现的完整 GUI 开发能力。

51

2025.12.05

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

299

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

220

2025.10.31

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

720

2023.08.22

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

271

2023.10.25

java学习网站推荐汇总
java学习网站推荐汇总

本专题整合了java学习网站相关内容,阅读专题下面的文章了解更多详细内容。

3

2026.01.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.8万人学习

Excel 教程
Excel 教程

共162课时 | 11.1万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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