0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈Python中的opencv

FPGA之家 来源:FPGA之家 作者:FPGA之家 2021-04-12 16:36 次阅读

经典机器学习深度学习,当下这些热门的词汇不知不觉在我们学习(diaosi)氛围浓重的大学蔓延开来,作为与计算机专业毫不相干的,指挥摁下开机键,点开穿越火线娴熟地操作wasd的我而言,当周围人讨论opencv,tensorflow,sklearn这些玄幻词汇时,听得我是一头雾水。今天,重拾一年前敲击hello world的自信,开启了Python的opencv生涯。

壹 为什么选择python?

作为时下最时尚的python语言,简洁的代码,借助于向军火库一般的各种开源工具包,你可以完成你想做的任何事。数值计算这些numpy,scipy,数据分析工具pandas,可视化matplotlib,可以使得非计算机工科生甚至文科生轻松上手,爬取处理数据。作为胶水语言的python在opencv上的应用不仅简单方便编写代码,其运行速度有时甚至优于c++等,让你更加专注于目标而不是语法结构。最重要的是,如果你已经下载过了anaconda python,安装opencv只需要一行代码就可完成!

贰 掌握anaconda和安装opencv

anaconda是用于科学计算的免费的python版本。可以在官网上下载anaconda,https://www.anaconda.com/,选择windows还是linux或是苹果的mac os。看清楚32位还是64位便可以下载。不过,下载数小时,经常下载不成功是常事。这时候,强烈建议逛一逛清华或者中科大的镜像站,下载变成分分钟的事。

opencv的安装:在网页上下载好对应版本的.whl文件后,打开你电脑的命令行,pip install一下就ok了。

叁 常见图片的格式

作为图像处理,那就需要知道常见的图片格式有哪些。

比较老的有bmp格式,bmp格式无损及没有压缩像素,但麻烦的是图片的体积偏大。

接着是jpg格式或者是jpeg格式,这是有损压缩的模式,将像素信息用jpeg保存成文件再读取出来。这个是我比较常处理的,用最少的磁盘空间得到最好的图片质量。

还有是png格式,是一种无损压缩模式,用的是行程编码算法,相比jpeg,更加适合存储几何特征比较强的图片。

我们在空间搞笑图片中常看见的GIF格式图片,是多帧图像的集合。我们处理读取时也要一帧一帧读。通过调节参数也可以控制显示快慢。

我们常说的黑白图像,在计算机中有两种。一种是位图模式,是真真切切的非黑即白,这种图像只有一位深度:0就是纯黑,1就是纯白。

还有一种图像叫灰度图像,在生活中我们常把灰度图像作为黑白图像。事实上,灰度图像有8位深度,(0,0,0,0,0,0,0,0)是纯黑,(1,1,1,1,1,1,1,1)是纯白,其余介于1至255之间的就是不同深度的灰度图像。

彩色图像就是RGB图像,顾名思义,RED,GREEN,BLUE,这三种色彩叠加组合可以构成我们人眼看到的任何颜色,在计算机处理彩色图像时,也是通过红绿蓝三个通道来进行,每个通道又各有八个深度,由此,我们知道,理论上计算机可以构成256的三次方种颜色!

肆 色彩空间转换

hsv颜色模型更接近人感觉颜色的方式,H是色相,S是饱和度,V是亮度。

lab色彩空间:L:整张图的亮度,a和b表示颜色多少,用于编码颜色。

opencv提供了上百种颜色空间转换方法,opencv做转化时,用到了cvtColor函数。

该函数用两个参数足以,第一个是图像名称,第二个是转换方式。

例如,我已经读入一个函数,

img = cv2.imread(path,way),

其中path是路径,way是读入方式,灰度图,彩色图还是加载alpha通道。

接着, gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 这就完成了彩色图像与灰度图像之间的转化。

其中,cv2.COLOR_BGR2GRAY这个方式,如果转化后还想要csv,就cv2.COLOR_BGR2CSV,如果想变更通道顺序,那么cv2.COLOR_BGR2RGB就可以了,很好玩。

图像缩放用cv2.resize函数,例如变成400*400像素记得写成cv2.resize(img,(400,400))。同样如果想x方向缩小直接fx=0.5即可。

此外,图像反转,图像保存,阈值化处理等也被opencv包装成了函数,用起来也十分方便。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenCV
    +关注

    关注

    29

    文章

    625

    浏览量

    41227
  • python
    +关注

    关注

    55

    文章

    4777

    浏览量

    84403

原文标题:浅浅浅浅谈opencv

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板

    提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置摄像头) 1、安装python3-opencv apt install python3-opencv 2、查看摄像头支持的格式与分辨率
    发表于 11-15 17:58

    手写图像模板匹配算法在OpenCV的实现

    OpenCV的模板匹配是支持基于NCC相似度查找的,但是不是很好用,一个主要的原因是查找最大阈值,只能匹配一个,自己比对阈值,又导致无法正确设定阈值范围,所以问题很多。于是我重新写了纯Python版本的NCC图像模板匹配的代码
    的头像 发表于 11-11 10:12 94次阅读
    手写图像模板匹配算法在<b class='flag-5'>OpenCV</b><b class='flag-5'>中</b>的实现

    基于OPENCV的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

    摄像头)1、安装python3-opencvaptinstallpython3-opencv2、查看摄像头支持的格式与分辨率root@de
    的头像 发表于 11-07 09:03 752次阅读
    基于<b class='flag-5'>OPENCV</b>的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

    Python在AI的应用实例

    Python在人工智能(AI)领域的应用极为广泛且深入,从基础的数据处理、模型训练到高级的应用部署,Python都扮演着至关重要的角色。以下将详细探讨Python在AI的几个关键应用
    的头像 发表于 07-19 17:16 890次阅读

    opencv-pythonopencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV-Python
    的头像 发表于 07-16 10:38 916次阅读

    嵌入式学习-飞凌ElfBoard ELF 1板卡 - 如何在Ubuntu编译OpenCV

    在之前发布的文章探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在 Ubuntu 环境下将 OpenCV 编译为 X86 架构可能更加方便和高效。 通过在主机上编译并
    发表于 06-07 09:21

    ELF 1技术贴|如何在Ubuntu编译OpenCV

    在之前发布的文章探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在Ubuntu环境下将OpenCV编译为X86架构可能更加方便和高效。通过在主机上编译并使用X86架构
    的头像 发表于 05-31 16:41 1120次阅读
    ELF 1技术贴|如何在Ubuntu<b class='flag-5'>中</b>编译<b class='flag-5'>OpenCV</b>库

    STM32MP135如何使用opencv-python或v4l2-ctl打开摄像头,并保存为图片?

    行。 但是官方的例程,直接用v4l推送到media上,直接显示的又是可以的。 请问我该如何使用opencv-python 或v4l2-ctl打开摄像头,并保存为图片?
    发表于 05-30 06:16

    itop-RK3588开发板机器视觉开发OpenCV-Python的安装

    itop-RK3588开发板机器视觉开发OpenCV-Python的安装
    的头像 发表于 01-26 15:18 4063次阅读
    itop-RK3588开发板机器视觉开发<b class='flag-5'>OpenCV-Python</b>的安装

    split在python的用法

    split在python的用法 split()是Python中一个非常常用的字符串函数,它能够根据指定的分隔符将一个字符串分割成多个子字符串,并返回一个包含这些子字符串的列表。本文将详细介绍
    的头像 发表于 12-25 15:12 1956次阅读

    Python2与Python3的差异

    Python2,print语句是一个关键字,而在Python3,print函数被引入,必须使用括号。此外,Python3要求字符串必须使
    的头像 发表于 11-23 16:48 887次阅读

    pythontext的用法

    Python的text是一个常见的数据类型,它用于存储和处理文本数据。在Python,文本常常被表示为字符串(string),字符串是一系列Unicode字符的有序序列。 在
    的头像 发表于 11-23 15:46 3311次阅读

    pycharmpython interpreter怎么设置

    在PyCharm设置Python解释器非常简单,只需按照以下步骤操作: 打开PyCharm,并打开你的项目。 在菜单栏中选择"File"(文件),然后选择"Settings"(设置)。在
    的头像 发表于 11-22 11:08 2973次阅读

    pythonnumber代表什么

    Python,number(数字)是一种内置的数据类型,用于表示数值。Python提供了几种不同的number类型,分别是整数(int)、浮点数(float)、复数(complex)和布尔值
    的头像 发表于 11-22 09:50 1860次阅读

    pythontuple的用法

    Python的元组(tuple)是一种不可变的有序集合。与列表(list)类似,元组可以存储任意类型的数据,但是元组一旦创建就不能被修改。在Python,元组是使用圆括号进行表示,
    的头像 发表于 11-21 16:27 904次阅读