目录

  • 1.像素
    • 1-1.确定像素位置
    • 1-2.获取指定像素的像素值
    • 1-3.修改像素的BGR值
  • 2.用numpy模块操作像素
    • 2-1.创建图像
      • 1.创建黑白图像
      • 2.创建彩色图像
      • 3.创建随机图像
    • 2-2.拼接图像
      • 1.水平拼接`hstack()`方法
      • 2.垂直拼接`vstack()`方法

1.像素

1.像素是构成数字图像的最小单位。每一幅图像都是由M行N列个像素组成,每一个像素存储一个像素值。比如:灰度图像的像素值取值范围为[0, 255](取整),一共有256个像素等级/灰度级别。0为纯黑色,255表示纯白色。

2.一个像素是一个具有一定面积的块,而不是一个点;像素的形状也不是固定的,大多数情况下被认为是正方形,但有时也可能是圆形或其它形状。

1-1.确定像素位置

由电脑自带的画图软件打开图片可查看图片水平方向W和垂直方向H的像素数量。如下图所示,W水平方向像素个数303,H垂直方向像素个数266。
W:为宽度,所以定为水平方向;H为高度,所以定为垂直方向!!!

像素的位置通常使用像素建立的HW坐标系表示,如下图所示。

注意:

1.水平像素个数是303,但水平坐标是从0到302;同理,垂直坐标从0到265。你可以这样理解像素的左上角坐标=像素的位置坐标。

2.像素坐标表示为(垂直方向坐标H, 水平方向坐标W),与我们以前学习xy坐标系中坐标表示(x, y)相反。

1-2.获取指定像素的像素值

1.一般来说,彩色图片采用的都是RGB色彩空间,在RGB色彩空间中存在三个通道。R通道、G通道和B通道,其中R通道指的是红色通道,G通道指的是绿色通道,B通道指的是蓝色通道,并且每个色彩通道都是在区间0~255内取值。

2.在RGB色彩空间中,彩色图像的通道顺序是 R → G → B,但是在OpenCV中,RGB色彩空间被BGR色彩空间取代,使得彩色图像的通道顺序变成了 B → G → R 。所以,上图读取到的各通道值为B(204)→ G(208)→ R(209)。

3.BGR色彩空间的图像,每3个数值表示一个像素,这三个数值分别表示蓝色,绿色和红色三种颜色的分量,把每一种颜色分量所在的区域称作通道。即 RGB/BGR 色彩空间的图像,用R、G、B 3个数值表示一个像素。

1-3.修改像素的BGR值

  • 方式1:像素赋值;img[H, W] = [B, G, R]

    • 实例:

  • 方式2:通道赋值;img[H, W,0或1或2] = 0~255中的某个整数

    • 实例:

1.对于BGR色彩空间的图像,当每个像素的B、G、R 3个数值相等时,就可以得到灰度图像。其中,B=G=R=0为纯黑色,B=G=R=255为纯白色。

2.要想使改变后的像素保存到图片中,最后要执行imwrite()方法。

2.用numpy模块操作像素

关于numpy的知识以后再更新,也可以去网上搜索,这里主要讲关于opencv的。

2-1.创建图像

在opencv中,黑白图像实际上就是一个二维数组,彩色图像是一个三维数组。数组中的每个元素就是图像对应位置的像素值。因此,修改数组就是修改图像的像素(即修改图像)。所以,创建一张图像其实就是创建一个数组。

1.创建黑白图像

  • 创建黑色图像:使用numpy提供的zeros()方法。

    • 实例:

  • 创建白色图像:法1.先创建纯黑图像,再利用numpy的数组切片将所有像素值改为255;法2.使用numpy的ones()方法,再用数组乘法乘以255.

    • 实例:

2.创建彩色图像

  • 与创建黑白图像的方法相比,彩色图像创建时:a.size多了个通道数(为3);b.数组切片多了一个维度;c.数组乘法没区别

    • 实例:

3.创建随机图像

1.numpy的zeros()方法第一个位置参数就是size,所以可以用位置参数;而randint()方法的第二个位置参数不是size,所以要用关键字参数。

2.综上,numpy创建图像的方法主要有:①numpy创建数组的内置方法;②numpy的数组乘法;③numpy的数组切片。

2-2.拼接图像

numpy提供了两种数组拼接的方法,分别为hstack()方法和vstack()方法。(h:horizontal水平的意思,v:vertical垂直的意思;stack:堆、叠的意思)

1.水平拼接hstack()方法

  • 语法格式:array = numpy.hstack(tup)

  • 参数说明:

    • array:拼接生成的新数组。
    • tup:需要拼接的数组;元组类型。
  • 实例:

2.垂直拼接vstack()方法

  • 语法格式:array = numpy.vstack(tup)

  • 参数说明:

    • array:拼接生成的新数组。
    • tup:需要拼接的数组;元组类型。
  • 实例:

注意拼接是有顺序的,是根据参数tup中的数组顺序拼接的。

第三章 Opencv图像像素操作相关推荐

  1. C++Opencv图像像素操作

    Mat对象与数学中的矩阵相似,也可以实现加减乘除. //像素值加法 Mat operator_demo1(Mat& image) {Mat dst;dst = image + Scalar(5 ...

  2. 第三章:Windows 7操作——知识点整理

    第三章:Windows 7操作--知识点整理 第三章:Windows 7操作 知识梳理 高频考点 3.1 操作系统概述 3.1.1 操作系统的概念 3.1.2 操作系统的功能 ⭐️⭐️⭐️ 3.1.3 ...

  3. MyBatis快速入门——第三章、DML语句操作

    MyBatis快速入门--第三章.DML语句操作 目录 在接口类中添加[UsersMapper.java] 修改[com.item.mapper.UsersMapper.] [action.java] ...

  4. OpenCV二值化图像像素操作

    二值化图像像素不是0就是255,数据类型为uchar.所以访问方法是: // 这里inputmat是二值化图像的mat inputmat.at<uchar>(y, x); 判断是否为白色的 ...

  5. 《Fundamentals of Computer Grahpics 4ed》虎书第四版翻译——第三章光栅图像

    文章目录 3.1 光栅设备 3.1.1 显示器 3.1.2 硬拷贝设备 3.1.3 输入设备 3.2 图像,像素和形状 3.2.1 像素值 3.2.2 显示器强度和伽马 3.3 RGB颜色 3.4 A ...

  6. C++ opencv之像素操作之逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)

    文章目录 一.知识点 二.函数原型 1.按位与操作 2.按位或操作 3.按位异或操作 4.取反操作 5.绘制矩形框操作 三.代码 四.附图 1.按位与操作附图 2.按位或操作附图 3.按位异或操作附图 ...

  7. MATLAB 图像函数(第三章) 图像基本处理

    1.graythresh------全局图像阈值 根据otsu方法求得图像二值化阈值 I=imread('lena.jpg'); level=graythresh(I); bw=im2bw(I< ...

  8. opencv之 图像像素操作(如何通过opencv在图像上划线)

    首先我们了解,一个图像,都是一个大的二维数组,每一个元素都是一个像素,若是rgb图像,则该像素还会有rgb三个值,我们读入一个图像 import cv2img = cv2.imread("o ...

  9. OpenCV图像像素遍历与访问

    遍历方式有很多种,下面给出两种方式: 基于数组遍历 基于指针遍历 1.基于数组遍历 Mat类中的cols.rows为图像的宽.高.成员函数at(row,col)可以存取图像元素.对于包含彩色图像的Ma ...

最新文章

  1. C++中的explicitkeyword
  2. java 8代码 改 java7_Java 8 到 Java 14,改变了哪些你写代码的方式?
  3. Python 面向对象 实例方法 属性 (上)
  4. 用Jenkins编译asp.net
  5. 【ElasticSearch】Es 源码之 IndicesClusterStateService 源码解读
  6. 简化java_Java泛型太复杂了?如何简化?
  7. 关于WM_NOTIFY的使用方法
  8. Windows server 2012 系统安装 密钥
  9. 2017中国之旅系列之十:山西张壁古堡之旅
  10. PCL:getCircumcircleRadius ❤️ 计算三角形外接圆半径
  11. Linux vim编辑器
  12. 松原计算机等级考试试题,2019年上半年吉林省松原市计算机等级考试注意事项...
  13. CSS 技巧,冲鸭!
  14. android_app开发微信支付集成
  15. 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(三)
  16. .resource文件如何打开
  17. 解答:C语言中结构体的定义中,后面跟的“结构体变量”到底是什么?
  18. 区块链中的石墨烯技术是什么
  19. (转) ML笔记:字典学习1(Dictionary Learning)
  20. 【论文笔记】ECCV_2016_The Unreasonable Effectiveness of Noisy Data for Fine-Grained Recognition

热门文章

  1. 2的n次方计算-c++
  2. css背景图片(第五次课)
  3. 微信公众号-自动回复
  4. 湖北省两化融合贯标专项解读,2022年申报奖励补贴以及申报条件汇总
  5. 免费资源丨全新版三维制作cinema4D自学零基础教程
  6. 面试官突然问我什么是后端?我通俗易懂的给他讲清楚了!
  7. js 对象深拷贝、对象数组深拷贝的几种方法总结
  8. 魔都商城 mysql(数据库表)
  9. Windows 10 命令行查看显卡驱动版本号
  10. 【测试】用例篇2(黑盒测试的测试用例)