c++如何使用OpenCV c++配置与图像处理入门【指南】
技术百科
裘德小鎮的故事
发布时间:2025-12-22
浏览: 次 C++配OpenCV图像处理核心是三步:装库、连项目、写代码跑通最小闭环。先读图、转灰度、显示,再逐步扩展滤波、检测等;需注意路径、版本匹配、BGR顺序等细节。
用 C++ 配 OpenCV 做图像处理,核心就三步:装好库、连上项目、写几行代码跑起来。关键不是堆参数,而是先让一张图读进来、显示出来、再改个颜色——走通这个最小闭环,后面学滤波、检测、识别就顺了。
下载与安装 OpenCV(Windows + Visual Studio 推荐)
去 OpenCV 官网 Releases 页面 下最新 Windows 版本(如 opencv-4.10.0-vc14_vc15.exe),双击解压到固定路径(比如 C:\opencv)。解压后你会看到 build\include(头文件)、build\x64\vc15\lib(链接库)、build\x64\vc15\bin(动态库 dll)。
注意:vc15 对应 VS2017/2019,vc16 对应 VS2025;选错版本会报“LNK2019”或“DLL 无法加载”。
- 把 C:\opencv\build\x64\vc15\bin 加进系统环境变量 PATH(重启终端生效)
- VS 新建空 C++ 项目 → 右键项目 → “属性” → 配置属性 → C/C++ → 常规 → “附加包含目录”填:C:\opencv\build\include
- 链接器 → 常规 → “附加库目录”填:C:\opencv\build\x64\vc15\lib
- 链接器 → 输入 → “附加依赖项”填:opencv_world410.lib(数字按你下的版本改,比如 410 表示 4.10.0)
写第一个 OpenCV 程序:读图 → 灰度 → 显示
新建一个 main.cpp,粘贴以下代码(不用改路径,先用绝对路径测试):
#includeusing namespace cv; int main() { Mat img = imread("C:/test.jpg"); // 替换为你本地一张 JPG 或 PNG if (img.empty()) { printf("读图失败!检查路径和文件是否存在\n"); return -1; } Mat gray; cvtColor(img, gray, COLOR_BGR2GRAY); // BGR 是 OpenCV 默认通道顺序! imshow("原图", img); imshow("灰度图", gray); waitKey(0); // 按任意键退出 return 0; }
编译运行前确认:
– 图片路径用正斜杠 / 或双反斜杠 \\
– 图片不能放在中文路径下
– 如果黑窗口一闪而过,说明程序崩溃或没等按键就结束了(加 waitKey(0) 就对了)
常见报错与快速排查
- LNK2019: 无法解析的外部符号 cv::imread → 库没连上:检查 lib 路径、lib 名字是否拼错、是否漏了 opencv_worldxxx.lib
- 0xc000007b 或 DLL 加载失败 → PATH 没加 bin 目录,或 vc 版本不匹配(比如用 vc15 库却在 VS2025 下编译)
- imshow 窗口空白/卡死 → 检查图片路径是否真实存在;某些笔记本集显驱动旧,可试加 namedWindow("xxx", WINDOW_NORMAL); 再 imshow
-
读图返回 empty() → 路径含中文
、扩展名大小写错误(Linux/macOS 敏感)、文件被其他程序占用
下一步可以练什么?
跑通上面例子后,马上动手改两行:
- 用 GaussianBlur(gray, gray, Size(5,5), 0) 给灰度图加高斯模糊
- 用 Canny(gray, gray, 50, 150) 做边缘检测
- 用 imwrite("out.png", gray) 把结果保存成文件
- 用 Mat roi = img(Rect(100,100,200,200)) 截取局部区域
不复杂但容易忽略:OpenCV 的 Mat 是 BGR 顺序,不是 RGB;所有坐标 (x,y) 是列优先(先列后行);图像宽高是 cols × rows,别和数学习惯反了。
# ai
# 放在
# 闭环
# 加载
# 为你
# 第一个
# 图像处理
# windows
# 你会
# 三步
# mac
# win
# linux
# 环境变量
# macos
# cos
# 堆
# c++
# visual studio
# 解压
# include
# 会报
# opencv
# 连上
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 如何在Golang中使用container/hea
- Python音视频处理高级项目教程_FFmpegP
- Windows11怎么用“记事本”自动换行与编码
- 如何提升Golang程序I/O性能_Golang
- Win11怎么禁用键盘自带键盘_Win11笔记本禁
- Win11怎么退出高对比度模式_Win11取消反色
- Win11怎么查看电脑配置_Win11硬件配置详细
- c# 在高并发场景下,委托和接口调用的性能对比
- Windows的便笺功能如何使用?(桌面备忘技巧)
- 如何解决Windows字体显示模糊的问题?(Cle
- php内存溢出怎么排查_php内存限制调试与优化方
- 如何使用Golang进行HTTP服务性能测试_测量
- Win11怎么查看显卡温度 Win11任务管理器查
- Drupal 中 HTML 链接被双重转义导致渲染
- Win11怎么设置开机密码_Windows11账户
- Linux怎么查找死循环进程_Linux系统负载分
- Win10闹钟铃声怎么自定义 Win10闹钟自定义
- VSC怎么创建PHP项目_从零开始搭建项目的步骤【
- Windows10蓝屏代码DPC_WATCHDOG
- Mac如何设置动态壁纸?(让桌面动起来)
- 静态属性修改会影响所有实例吗_php作用域操作符下
- Windows执行文件被SmartScreen拦截
- Windows10电脑怎么连接蓝牙设备_Win10
- Win11笔记本怎么看电池健康度_Win11电池报
- php修改数据怎么批量改状态_批量更新status
- Win11怎么设置多显示器任务栏 Win11扩展任
- Python包结构设计_大型项目组织解析【指导】
- php485在php5.6下能用吗_php485旧
- Mac如何使用听写功能_Mac语音输入打字【效率技
- C++如何使用std::transform批量处理
- Python数据抓取合法性_合规说明【指导】
- 如何使用Golang实现微服务状态监控_Golan
- Win11怎么关闭任务栏小图标_Windows11
- MAC如何安装Git版本控制工具_MAC开发环境配
- Linux怎么禁止Root用户远程登录_Linux
- 如何用::实现工具类方法调用_php静态工具类设计
- 如何在 Django 中安全修改用户密码而不使会话
- How to Properly Use NumPy
- Go 中实现 Python urllib.quot
- Win11时间格式怎么改成12小时制 Win11时
- php怎么捕获异常_trycatch结构处理运行时
- Win11怎么关闭透明效果_Windows11个性
- Win11任务栏天气怎么关闭 Win11隐藏天气小
- Win11关机界面怎么改_Win11自定义关机画面
- Mac如何调整Dock栏大小和位置_Mac程序坞个
- php能跑在stm32上吗_php在stm32微控
- Windows 11怎么更改锁屏超时时间_Wind
- 如何在Golang中验证模块完整性_Golangg
- Win11怎么设置单手模式_Win11触控键盘布局
- Win11怎么更改输入法顺序_Win11调整语言首

、扩展名大小写错误(Linux/macOS 敏感)、文件被其他程序占用
QQ客服