| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 计算机视觉:三、图像基础 -> 正文阅读 |
|
[人工智能]计算机视觉:三、图像基础 |
计算机视觉:三、图像基础本文我们将回顾构建图像的基础元素:像素。
? 例如,如果我们有一个分辨率为10*10的图像,这就说明我的图像被表示为一个像素网格,这个网格有10行10列。整体来说,图像中共有10??10=100个像素,如图。 当然我们平时所见的图像,远远不止于此,一般普通的图片都在500*300左右。 ? 这样说来,我们的图片能被一个300*500的像素网格所表示,500行300列。总体来看共有150000个像素。 ? 大多数的像素以两种方式来表示:灰度和彩色。灰度图中每个像素的取值范围仅仅是0-255,0对应黑色,255对应白色。0-255中间的数值则对应着灰色。 ? 而彩色像素通常以RGB色彩空间来表示,每个像素分别有R、G、B三个值。这三个颜色分别用0-255区间中的整数来表示,代表着这个颜色的成分有多少。因为取值范围在[0,255]之间,所以通常用8位无符号整数来表示。 然后把这三个值组合成RGB三元组(red,green,blue),以此来表示颜色。
如上所述,一副图像可以被表示为一个像素网格。将我们的网格想想为一张图表,图像的左上角对应着点(0, 0),当我们从该点出发向右或者向下移动时,x , y的坐标开始增加。
和之前一样,读入一张图片并展示。 执行命令
? 又看见了这只可爱的小松鼠,那么按照我们之前说的,这幅松鼠的图像在计算机中是用一组像素来表示的,那么我们能否对这组像素做一些操作呢? ? 显然是可以的,我们通过指定在坐标系中的x和y坐标来确定我们要操作的像素。同时,我们可以通过给定的三元组来表示图像的红、绿和蓝色成分。 ? 但是,我们需要注意的是OpenCV中以相反的顺序来存储RGB通道,也就是说,通常我们说的RGB通道在OpenCV中以蓝、绿、红的顺序来存储。这点需要特别注意以免后面出现混淆。 ? 现在,让我们通过代码来实现对像素的操作吧: ? 在上面的代码后面追加:
可以看到,我们将图像中的(0,0)坐标处的像素分解成一个三元组(b, g, r),分别代表该像素的蓝、绿、红三个通道,并将他们分别输出。 然后再将该点处像素三个通道的值改变成(0, 0, 255)后分别输出。 当我们点击展示处的图像,并按下任意键后,输出下列信息。
可以看到(0,0)处的像素信息被打印出来,随后该值被改变,又再一次被输出。 我们可以如此简单的读取并操作图片中的像素都是因为NumPy的帮助。 上面的代码只对单个的像素值进行操作,看起来非常简单但如果我们想对图像的某个区域进行操作呢?我们可以利用NumPy的切片能力来完成,我们在上述的代码下追加如下代码:
我们定义了一个新的数组,这个数组复制了小松鼠图像的左上角x=0到x=100 ,y=0到y=100的矩形的像素信息,将这个矩形定义为变量corner 然后改变了原来的image图像,将原来图像的x=0到x=100 ,y=0到y=100的矩形的像素值改变为(255, 0 , 0),也就是将图像左上角边长为100像素的矩形的像素改变为蓝色。 执行该程序,效果如下所示: 这里我们注意一下切片的用法: [x1:x2 , y1:y2]表示数组中从x = x1 到 x = x2 从y = y1 到y = y2的矩形切片。 总结: ? 今天我们主要学习了图像的基础表示:像素的概念和组成。通过执行x和y坐标来读取和改变单个像素点的信息。然后通过数组切片的来读取和改变图像中某个区域的像素的信息。 参考书籍:Practical Python and OpenCV |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/27 10:27:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |