| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Opencv图像基本操作——读取、显示、截取图像、属性、颜色通道、边界填充、图像融合 -> 正文阅读 |
|
[人工智能]Opencv图像基本操作——读取、显示、截取图像、属性、颜色通道、边界填充、图像融合 |
引言我们都会有一个疑惑:计算机眼中的图像长什么样子呢? 首先拿来一张图片分割成无数个小格,每一个小格叫做像素点,计算机中的图像是由像素点构成的像素矩阵,像素点构成它的每一个值都是在0-255之间浮动的,表示亮度。当取值为零的时候就是黑色,取255超级亮了可以视为白色。R,G,B是颜色通道,彩色图像有三个颜色通道,灰度图像只有一个颜色通道。 一、读取图像Opencv中读取图像它的通道是BGR当我们用matplotlib.pyplot绘图展示会有冲突,所以最好还是选取opencv中自带的展示比较好。
结果如图所示(img的类型是numpy.ndarray) ?二、图像显示
cv2.waitKey(0):参数0代表任意键终止(图像显示之后按键盘任意键图像就可以停止展示) 如果不是0,比如1000(这代表等待时间,毫秒级别) 或者自己写个函数:
结果展示; ? 三、彩色图像转换成灰度图
结果如图所示: ?四、图片截取由于是数组形式所以我们可以用切片进行截取图像,代码如下:
结果如图所示: ?五、颜色通道
还可以这样用数组的形式:
结果如图所示: 六、边界填充?BORDER_REPLICATE:复制法,也就是复制最边缘像素。 BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|gfedcba BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg BORDER_CONSTANT:常量法,常数值填充。
结果如图所示: ?七、数值计算(由于像素矩阵的类型是numpy.ndarray但shape也得一样)
?
array([[148, 147, 147, ..., 161, 162, 161], [148, 147, 147, ..., 159, 160, 160], [148, 147, 146, ..., 158, 158, 158], [147, 147, 146, ..., 158, 158, 158], [147, 146, 146, ..., 159, 159, 159]], dtype=uint8)
?结果是这样的: ?我们会发现右上角111+161=272但我们像素范围是(0-255)所以越界了,这个方法的处理办法是272%255 另一个方法:
结果如图所示: 这个越界是通过直接255代替。 八、图像融合?
结果: (864, 1920, 3)
结果: (337, 600, 3)
结果: ?图像融合就是r=a*x1+b*x2+c(a,b代表权重,c代表偏置)
结果如图所示: ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 19:40:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |