OpenCV4官方版是一款开源的跨平台计算机视觉库。OpenCV4最新版软件兼容性强,支持Linux、Windows、Mac
OS等多种操作系统,适用于机互动、物体识别、运动跟踪、图像分割等领域。OpenCV4软件内置了Python、MATLAB、Ruby等语言的接口,用户能够轻松的使用和修改代码。
OpenCV4短评
OpenCV4 是目前主流的计算机视觉库,在经典版本基础上大幅优化性能,新增 DNN 深度学习模块,可直接部署主流 AI 视觉模型。跨平台支持完善,硬件加速效果更好,图像处理、目标检测、视频追踪等功能更稳定。API 设计更规范,不过依旧无图形界面,需要编程基础,新手入门有一定门槛。
OpenCV4适合人群
适合计算机视觉工程师,用于深度学习模型部署与实时视觉处理;适合科研及高校学生,开展图像算法实验与项目开发;适合工业检测开发者,实现高精度的缺陷检测与视觉识别需求。
OpenCV4特色
1、在扩展模块中去掉了SIFT与SURF相关API的调用文件
现在如果想在OpenCV Python 4.x中想使用SIFT与SURF只有靠自己从源代码CMake来编译生成python版本的安装包才可以。
# OpenCV 3.x中:
namedWindow(“input”, cv.CV_WINDOW_AUTOSIZE)。
# OpenCV4.x:
namedWindow(“input”, cv.WINDOW_AUTOSIZE)。
2、全部取消CV_XXX这种枚举类型,比如在3.x中可以正常使用的语句
# 在OpenCV3.x中轮廓发现API返回三个值分别为:
# image 返回的图像。
# contours 每个轮廓的点集合。
# hierarchy 每个轮廓对应的层次信息。
binary, contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL,
cv.CHAIN_APPROX_SIMPLE)。
3、findContours函数返回结果由3.x的三个参数变为两个参数
OpenCV4.0中需要改为:
contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL,
cv.CHAIN_APPROX_SIMPLE)。
4、增加了python语言版本的对DNN模块的加持
支持图像分类、对象检测(SSD、RCNN、Faster-RCNN、mask-RCNN)、图像分割等网络的使用。
语言的接口,可应用于人机互动,物体识别,图像处理等领域。
OpenCV4新增功能
DNN对很多网络层进行了提升,如ONNS中的LSTM, Broadcasting, Algebra over constants, Slice
with multiple inputs;DarkNet中的grouped convolutions, sigmoid, swish,
scale_channels;MobileNet-SSD v3
更多OpenVINO后端特性:可通过nGraph添加自定义层
优化CUDA后端,并杀掉一些BUG
可以使用最新的IPP-CV 2020.0.0Gold版本进行CPU优化
使用SIMD指令优化了integral、resize和RLOF实现
更多演示和例子
opencv_contrib:增加了Alpha Matting算法
calib3d:findChessboardCorners SB算法提升
core:getNumberOfCPUs()函数提升
imgcodecs:支持OpenJPEG库
highgui(Qt):增加到剪切板的复制功能
OpenCV4应用领域
应用领域编辑
1、人机互动
2、物体识别
3、图像分割
4、人脸识别
5、动作识别
6、运动跟踪
7、机器人
8、运动分析
9、机器视觉
10、结构分析
11、汽车安全驾驶
OpenCV4常见问题
OpenCV4和OpenCV3有什么区别?
1、在扩展模块中去掉了SIFT与SURF相关API的调用文件
现在如果想在OpenCV Python 4.x中想使用SIFT与SURF只有靠自己从源代码CMake来编译生成python版本的安装包才可以。
# OpenCV 3.x中
namedWindow(“input”, cv.CV_WINDOW_AUTOSIZE)
# OpenCV4.x
namedWindow(“input”, cv.WINDOW_AUTOSIZE)
2、全部取消CV_XXX这种枚举类型,比如在3.x中可以正常使用的语句
# 在OpenCV3.x中轮廓发现API返回三个值分别为
# image 返回的图像
# contours 每个轮廓的点集合
# hierarchy 每个轮廓对应的层次信息
binary, contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL,
cv.CHAIN_APPROX_SIMPLE)
3、findContours函数返回结果由3.x的三个参数变为两个参数
OpenCV4.0中需要改为
contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL,
cv.CHAIN_APPROX_SIMPLE)
4、增加了python语言版本的对DNN模块的加持!
支持图像分类、对象检测(SSD、RCNN、Faster-RCNN、mask-RCNN)、图像分割等网络的使用
图像读取返回 None 如何解决?
规范路径:使用纯英文绝对路径,禁止中文、空格、特殊字符导致读取失败;
文件校验:确认图片为 jpg/png/bmp 格式,无损坏、未加密、完整下载;
函数调用:使用 cv2.imread (),默认彩色读取,传 0 可直接读取灰度图;
权限设置:Windows 以管理员身份运行程序,获取文件完整读取权限;
替换测试:使用标准测试图片,排查文件本身损坏导致的读取异常。
图像显示窗口闪退怎么办?
添加等待语句:imshow 后必须加 cv2.waitKey (0),等待按键关闭窗口;
销毁资源:代码末尾添加 cv2.destroyAllWindows (),安全释放显示资源;
空值判断:先判断 img 是否为空,为空则打印提示,避免空数据闪退;
循环适配:视频处理用 cv2.waitKey (1),实现帧刷新不卡死;
环境重启:重启 PyCharm/Jupyter,解决内核卡顿导致的界面异常。
摄像头无法打开怎么排查?
调整索引:内置摄像头用 cv2.VideoCapture (0),外接设备试 1/2 索引;
权限开启:系统设置授予相机权限,关闭微信、浏览器等占用程序;
驱动更新:更新摄像头硬件驱动,在系统相机中测试设备正常;
代码校验:添加 cap.isOpened () 判断,未打开输出报错信息定位问题;
格式设置:调用 cap.set () 设置分辨率帧率,适配设备支持的参数。
视频保存失败无法播放?
编码器配置:使用 cv2.VideoWriter_fourcc (*'mp4v'),适配 MP4 格式保存;
参数匹配:宽高、帧率必须与原视频一致,分辨率不匹配会保存失败;
路径规范:保存路径无中文,文件后缀设为 mp4,OpenCV4 最优支持格式;
资源释放:完成后执行 cap.release () 和 out.release (),锁定视频文件;
格式修复:保存失败可更换 XVID 编码器,生成 avi 格式视频测试。
图像颜色失真红蓝颠倒?
原理说明:OpenCV4 默认 BGR 通道,Matplotlib 显示为 RGB,导致颜色颠倒;
快速转换:使用 cv2.cvtColor (img, cv2.COLOR_BGR2RGB) 修正颜色通道;
窗口区分:cv2.imshow 无需转换,第三方绘图库必须执行通道转换;
保存优化:直接保存 BGR 格式图像,无需转换,避免保存后失真;
通道处理:拆分 BGR 通道重新排序,适配不同可视化工具的要求。
OpenCV4与PIL/Pillow区别
功能定位:OpenCV4 是全功能计算机视觉库,支持图像、视频、AI、摄像头;Pillow 仅轻量图片处理,无视觉算法。
性能效率:OpenCV4 处理速度快,适合大图、视频、高并发;Pillow 纯 Python 实现,性能弱,仅适合简单操作。
适用领域:OpenCV4 用于自动驾驶、工业检测、安防、AI 视觉;Pillow 用于网页、轻量图片裁剪、格式转换。
上手难度:OpenCV4 函数丰富,学习曲线稍高;Pillow 接口简单,新手极易上手。
OpenCV4更新日志
1.修复BUG,新版体验更佳
2.更改了部分页面
华军小编推荐:
OpenCV4是一款非常实用、简单的工具,有兴趣的用户可以在华军软件园下载使用,另外还有众多同款同类软件提供下载,如:快表软件、appmaker、批量小管家等。