读写图像文件
imread函数
返回值:Mat对象;如果读取文件失败,则会返回一个空矩阵,Mat::data的值为NULL
若要检查是否读入成功,使用Mat::empty()函数检查
声明:Mat imread(const string& filename, int flags=1 );
filename是读取或保存文件名
flag>0,返回三通道图像如果磁盘上的图像文件是单通道的灰度图像,则会被强制转为 3 通道;
flag=0,该函数返回单通道图像,如果磁盘的图像文件是多通道图像,则
会被强制转为单通道
flag<0,则函数不对图像进行通道转换
imwrite函数
声明:bool imwrite(const string& filename, InputArray image,const vector<int>& params=vector<int>())
文件的格式由 filename 参数指定的文件扩展名确定。推荐使用 PNG 文件格
式。BMP 格式是无损格式,但是一般不进行压缩,文件尺寸非常大;JPEG 格式
的文件娇小,但是 JPEG 是有损压缩,会丢失一些信息。PNG 是无损压缩格式,
推荐使用。
imwrite()函数的第三个参数 params 可以指定文件格式的一些细节信息。这
个参数里面的数值是跟文件格式相关的:
JPEG:表示图像的质量,取值范围从 0 到 100。数值越大表示图像质量
越高,当然文件也越大。默认值是 95。
PNG:表示压缩级别,取值范围是从 0 到 9。数值越大表示文件越小,
但是压缩花费的时间也越长。默认值是 3。
PPM,PGM 或 PBM:表示文件是以二进制还是纯文本方式存储,取值为
0 或 1。如果取值为 1,则表示以二进制方式存储。默认值是 1。
并不是所有的 Mat 对象都可以存为图像文件,目前支持的格式只有 8U 类型
的单通道和 3 通道(颜色顺序为 BGR)矩阵;如果需要要保存 16U 格式图像,只
能使用 PNG、JPEG 2000 和 TIFF 格式。如果希望将其他格式的矩阵保存为图像文
件,可以先用 Mat::convertTo()函数或者 cvtColor()函数将矩阵转为可以保存的格
式。
另外需要注意的是,在保存文件时,如果文件已经存在,imwrite()函数不会
进行提醒,将直接覆盖掉以前的文件。
Canny(im, result, 50, 150),边缘操作。

这两个阈值是干嘛用的,是用来控制边界信息。
阈值越小,得到的边界信息越丰富,信息越多,边界越细致。
阈值越大,得到的边界信息越少。
索贝尔算子(sober)是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。索贝尔算子是把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。

浙公网安备 33010602011771号