openCV基本操作笔记

本文档详细介绍了OpenCV库在图像处理中的基本操作,包括读取、显示和保存图片,颜色空间转换,图像仿射变换,图像缩放、翻转、加法等几何变换,以及形态学操作如腐蚀、膨胀。还涵盖了图像滤波、二值化、边缘检测以及视频操作,如摄像头读取、帧处理和视频写入等。
摘要由CSDN通过智能技术生成

来源 | 极链AI云(性价比最高的共享GPU算力平台,新人注册可领取限定198元大礼包,价值100+小时的免费使用时长,领取地址:https://cloud.videojj.com/

作者 | sun 极链AI云技术原创奖励计划

原文地址 | openCV基本操作笔记(官网论坛)

 

读取图片

cv2.imread(filepath,flags)
  • filepath:要读入图片的完整路径
  • flags:读入图片的标志
    • cv2.IMREAD_COLOR:默认参数,读入一副BGR彩色图片,忽略alpha通道
    • cv2.IMREAD_GRAYSCALE:读入灰度图片
    • cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
  • 返回值:一个rows * cols * depth的数组,rows是图像像素的行数 cols是图像像素的列数 depth是图像颜色深度,灰度图一般是1 ,RGB图一般是3

显示图片

cv2.imshow('image',img)
  • image:显示图像的窗口的名字
  • img:要显示的图像(imread读入的图像)

保存图片

cv2.imwrite(file,img,[num])
  • file:要保存的文件名
  • img:保存的图像
  • num:针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别,默认为3。

颜色空间转换函数

cv2.cvtColor(src, code, dst=None, dstCn=None)
  • src: 原图像;
  • code: 指定颜色空间转换类型,cv2.COLOR_BGR2RGB,cv2.COLOR_BGR2GRAY 等
  • dst: 目标图像;与原图像大小深度一致;
  • dstCn: 指定目标图像通道数;默认None,则会根据src、code自动计算;

图像仿射

cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst
  • src :输入图像;
  • M:变换矩阵,作为仿射变换矩阵,一般反映平移或旋转的关系,为numpy的float32类型的2×3的变换矩阵。
  • dsize:输出图像的大小;
  • flags :插值方法的组合(int 类型);
  • borderMode :边界像素模式(int 类型);
  • borderValue :边界填充值; 默认情况下,它为0。

获得仿射变化矩阵

cv2.getRotationMatrix2D(center, angle, scale) -> Mat
  • center:图片的旋转中心
  • angle:旋转角度
  • scale:缩放比例
  • Mat:仿射变换矩阵,2×3的变换矩阵。

图像缩放

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
  • src:原图像d
  • size:输出图像所需大小
  • fx:沿水平轴的比例因子
  • fy:沿垂直轴的比例因子
  • interpolation:插值方式

画图

画直线、矩形

cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) → img
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) → img
  • img:背景图
  • pt1:直线起点坐标
  • pt2:直线终点坐标
  • color,当前绘画的颜色。如在BGR模式下,传递(255,0,0)表示蓝色画笔。灰度图下,只需要传递亮度值即可。
  • thickness,画笔的粗细,线宽。若是-1表示画封闭图像,如填充的圆。默认值是1
  • lineType,线条的类型
    • 如8-connected类型、anti-aliased线条(反锯齿),默认情况下是8-connected样式ide,cv2.LINE_AA表示反锯齿线条,在曲线的时候视觉效果更佳。
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,主要用于实时图像处理、计算机视觉任务和机器学习应用。在C++中使用OpenCV需要注意以下几个关键点: 1. **安装**:首先需要从官网下载适合你的平台的版本,并按照文档安装。确保路径添加到系统环境变量中,以便程序能够找到库文件。 2. **基本结构**:OpenCV的主要数据结构包括Mat(矩阵),它是最基本的数据容器,用于存储图像和像素数据。还有其他如Point、Size、Rect等用于表示几何形状的对象。 3. **函数使用**:OpenCV提供大量图像处理和计算机视觉函数,例如读取和显示图片(imread、imshow)、图像操作(resize、crop)、颜色空间转换、边缘检测(Canny)、特征提取(SIFT、SURF)以及机器学习模块(比如Haar cascades用于人脸检测)。 4. **模板编程**:利用OpenCV提供的API,通常通过模板类和函数来编写代码,因为很多操作都是针对不同类型的图像矩阵。 5. **异常处理**:由于OpenCV函数可能会抛出错误,记得在关键部分使用try-catch块来捕获并处理异常。 6. **内存管理**:Mat对象在内部管理其内存,但建议手动释放不再使用的大型矩阵,避免内存泄漏。 7. **多线程支持**:OpenCV提供了线程安全的函数,如果你需要在多线程环境中工作,确保正确同步访问共享资源。 8. **实践项目**:熟悉OpenCV最好的方式就是实际参与一些项目,比如图像分类、物体追踪等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值