中年|了解常见的计算机视觉设计OpenCV功能及其应用
本文插图
计算机视觉是人工智能的一个领域 , 可训练计算机解释和理解视觉世界 。 因此 , 许多项目涉及使用摄像机和视频中的图像以及使用多种技术(例如图像处理和深度学习模型) 。 OpenCV是一个旨在解决常见的计算机视觉问题的库 , 它在该领域中非常受欢迎 , 非常适合学习和在工作中使用 。 该库具有多种语言的接口 , 包括Python , Java和C ++ 。 在整篇文章中 , 我将介绍OpenCV的(通用)功能、应用程序以及如何使用每个功能 。 虽然我将使用Python提供例子 , 但对于不同的语言 , 概念和功能也都是相同的 , 道理都是一样的 。
1、读取 , 写入和显示图像
在使用计算机视觉进行任何操作之前 , 我们需要理解计算机如何处理图像 。 计算机唯一可以处理的信息是二进制信息(0和1) , 其中包括文本 , 图像和视频 。 那么计算机如何处理图像呢?我们要知道计算机如何“理解”图像 , 可以对图像大小的矩阵进行拍照 , 在每个单元格上分配一个表示该位置图像颜色的值 。 让我们以灰度图像为例:
本文插图
对于这种特殊情况 , 我们可以为图像中的每个块(或像素)分配一个数值(可以解释为二进制) 。 我们习惯上将0表示黑色 , 将255表示白色 , 以及介于两者之间的所有整数代表强度 , 但该数值可以在任何范围内 。
当我们处理彩色图像时 , 根据库和我们选择表示颜色的方式 , 情况可能会有所不同 。 我们将在后面的文章中进一步讨论这一点 , 但是 , 它们或多或少都具有相同的想法 , 即使用不同的通道表示颜色 , 它们也是是RGB(红色 , 绿色和蓝色)最受欢迎的选项之一 。 使用RGB , 我们需要3个通道来构建每个像素 , 因此我们的2d矩阵现在是深度为3的3d矩阵 , 其中每个通道都是特定颜色的强度 , 并且在混合时我们获得了像素的最终颜色 。
2、使用OpenCV处理图像
现在 , 让我们跳入到代码中 , 以处理图像 , 读取 , 显示和保存时执行3个最重要的功能 。
本文插图
如果运行我们上面的代码 , 现在将获得一张图像保存到磁盘 , 另一张图像作为打印结果 。
本文插图
左边的图像是我们绘制的图像 , 而右边的图像是保存到磁盘的图像 。 抛开尺寸的不同 , 左侧的图像看起来很奇怪 , 看上去有点蓝色 , 但是为什么不同呢?(顺便说一句 , 右边的图像是正确的) 。 左侧图像看起来颜色奇怪的原因与OpenCV默认情况下读取图像的方式有关 。 OpenCV imread()函数将使用BGR通道读取图像 , 该图像应为绘图功能所使用的RGB 。 对于OpenCV , 这是正常现象 , 我们将在下文中讲解如何修复它的方法 。
3、改变色彩空间
什么是色彩空间?在前面的示例中 , 我们看到了计算机如何处理图像 , 并且看到了要表示颜色的颜色 , 我们需要使用通道 , 这些通道组合在一起后就可以得出图像的最终颜色 。 设置这些通道的配置是色彩空间 。 我们在先前的代码片段中已经覆盖了2个不同的颜色空间 , 我们使用了RGB和BGR , 但是还有更多具有非常特殊和有趣特性的属性(一些流行的色彩空间包括LAB , YCrCb , HLS和HSV) 。 由于每个色彩空间都有其自身的属性 , 因此某些算法或技术在一个色彩空间中可能比其他色彩空间更好地工作 , 因此在这些色彩空间之间更改图像非常重要 , 而且值得庆幸的是 , OpenCV为我们提供了一个非常易于使用的功能 。 让我们看看如何使用它来修复上面的图(使用cvtColor)
推荐阅读
- 中年|Carnot研发新型空气压缩机:噪音更低 寿命更长 成本更低
- 中年|中国-东盟区块链应用创新实验室揭牌
- 中年|交易所成黑钱胜地:“冻卡潮”背后的秘密
- 中年|波卡上线 现阶段是否值得投资?
- 中年|首台国产T3.20悬臂式掘进机在中信重工下线
- 中年|探索城市的“未来模样”,腾讯政务接下来这么干
- 中年|明年起禁用不可降解塑料购物袋、吸管!塑料袋发明者本来是为拯救地球
- 无人科技,电池技术|盘点几种常见的无人机电池
- 中年|神奇!这款智能垃圾集成箱能自动开合还能紫外线消毒
- 中年|6种经典糯米吃法,软软糯糯,一学即会
