OpenCV学习笔记 (二) 图片、视频、摄像头显示

关于 OpenCV 命名空间

OpenCV 中的 C++ 类和函数 (方法) 都是定义在命名空间 cv 之内的, 有两种方法可以访问。

第一种是 : 在代码开头的适当位置, 加上 using namespace cv 这句。

另外一种是 : 在使用 OpenCV 类和函数时,都加入 cv:: 命名空间。不过这种情况难免会不爽,每用一个 OpenCV 的类或者函数,都要多敲四下键盘写出 cv::, 很麻烦。 所以还是直接在开头加上 using namespace cv 较方便。

Mat 类型

cv::Mat 类是用于保存图像以及其他矩阵数据的数据结构。

图像的载入和显示

1. imread 函数

可以在 cv 官方文档中看到

Mat cv::imread  (   const String &  filename,
int     flags = IMREAD_COLOR
)

第一个参数, 是需要我填入载入图片的路径名或者名字。 第二个参数是一个标识, 具体在一个枚举里面详细定义。查看官方文档即可知道。
如下图 :

flag 是 int 型变量, 如果不在枚举中取值的话, 可以这样来 :

  • flag > 0, 返回一个 3 通道的彩色图像。
  • flag = 0, 返回灰度图像。
  • flag < 0, 返回包含 Alpha 通道的加载图像。

需要注意的是: 输出的图像默认情况下是不载入 Alpha 通道进来的。 如果需要载入 Alpha 通道, 就需要给负值。

载入图像的函数, Windows 操作系统下, OpenCV 的 imread 函数支持如下类型 :

  • Windows 位图, *.bmp, *.dib
  • JPEG 文件, *.jpeg, *.jpg, *.jpe
  • JPEG 2000 文件, *.jp2
  • PNG 图片, *.png
  • 便携式文件格式, *.pbm, .pgm, .ppm
  • Sun rasters 光栅文件, *.sr, *.ras
  • TIFF 文件 *.tiff, *.tif

2. namedWindow 函数

用于创建一个窗口。namedWindow 函数的作用是,通过指定的名字,创建一个可以作为图像和进度条的容器窗口。如果具有相同名称的窗口已经存在,则函数不做任何事情。

可以使用 destroyWindow() 或者 destroyAllWindows() 函数来关闭窗口, 并取消之前分配的与窗口相关的所以内存空间。一般不会手动调用这两个函数, 在退出时, 操作系统会自动关闭资源和应用程序的窗口。

3. imshow 函数

在指定的窗口中显示一幅图像。

函数原型 :

void imshow(const string& winname, InputArray mat);  

第一个参数为窗口的名字, 第二个参数为要显示的图像。

4. imwrite 函数

输出图像到文件。 函数如下 :

bool imwrite(const string& filename,InputArray img, const vector<int>& params=vector<int>());  
  • 第一个参数, const string & 类型的 filename, 填需要写入的文件名就行了, 带上后缀。如 output.jpg
  • 第二个参数, InputArray 类型的 img, 一般填一个 Mat 类型的图像数据就行了。
  • 第三个参数, const vector& 类型的 params, 表示为特定格式保存的参数编码, 它有默认值 vector(), 所以一般情况下不需要填写。

VideoCapture 类

可以利用它读入视频, 读入摄像头捕获的视频 (只需要改变参数即可)。

最后结合:

  • 灰度化图像函数, cvtColor();
  • 内核降噪函数, blur();
  • 边缘检测函数, Canny;

做了一个简单实例。
最后看了一下效果图。 如下 :

将工程放到了, Github 仓库里

也可以在 浅墨 QianMo 看到详细的工程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值