经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。 |
我们已经在测试OpenCV 4.1是否安装成功时见过图像的读取与显示的相关程序,在那个例程里我们读取了一张图像,并且将其显示出来。图像的种类非常多,包括彩色图像、灰度图像、16位深度图、32位深度图等,例程里只给出了一种图像的常见读取方式,本节中将详细的介绍图像读取和显示的相关功能。
2.2.1图像读取函数imread
我们在前面已经见过了图像读取函数imread()的调用方式,这里我们给出函数的原型。
代码清单2-24 imread()函数的原型
1.cv::Mat cv::imread(const String & filename,
2. int flags=IMREAD_COLOR
3. )
- filename:需要读取图像的文件名称,包含图像地址、名称和图像文件扩展名
- flags:读取图像形式的标志,如将彩色图像按照灰度图读取,默认参数是按照彩色图像格式读取,可选参数在表2-3给出。
函数用于读取指定的图像并将其返回给一个Mat类变量,如果图像文件不存在、破损或者格式不受支持时,则无法读取图像,此时函数返回一个空矩阵,因此可以通过判断返回矩阵的data属性是否为空或者empty()函数是否为真来判断是否成功读取图像,如果读取图像失败,data属性返回值为0,empty()函数返回值为1。函数能够读取多种格式的图像文件,但是在不同操作系统由于使用的编解码器不同,因此在某个系统中能够读取的图像文件可能在其他系统中就无法读取。无论在哪个系统中,bmp文件和dib文件都是始终可以读取的,