当前位置: 首页 > article >正文

OpenCV基础:矩阵的创建、检索与赋值

 本文主要是介绍如何使用numpy进行矩阵的创建,以及从矩阵中读取数据,修改矩阵数据。


 创建矩阵

import numpy as np

a = np.array([1,2,3])
b = np.array([[1,2,3],[4,5,6]])
#print(a)
#print(b)

# 创建全0数组 eros矩阵
c = np.zeros((8,8), np.uint8)
#print(c)

# 创建全1数组 ones矩阵
d = np.ones((8,8), np.uint8)
#print(d)

# 创建全值数组 full矩阵
e = np.full((8,8), 10, np.uint8)
#print(e)

# 创建单元数组 identity
f = np.identity(4)
#print(f)

# 创建单元数组
g = np.eye(5, 7, k=3)
print(g)

接口解释:

1. array

  • np.array 是 numpy 库的一个接口,用于创建 numpy 数组。可以将 Python 列表或嵌套列表转换为 numpy 数组,提供了更高效的数组操作功能,支持向量化操作,例如数学运算、切片、索引等。
  • np.array([1,2,3]) 创建了一个一维的 numpy 数组,包含元素 1、2 和 3。
  • np.array([[1,2,3],[4,5,6]]) 创建了一个二维的 numpy 数组,是一个 2 行 3 列的矩阵。

2. zeros

  • np.zeros 是 numpy 的接口,用于创建指定形状的全零数组。
  • 这里创建了一个 8 行 8 列的数据类型为 np.uint8(无符号 8 位整数)的全零数组。可以用于初始化存储数据的数组,或者作为计算的初始状态。

3. ones

  • np.ones 与 np.zeros 类似,不同之处在于它创建的是全 1 数组。
  • 此函数创建了一个 8 行 8 列的数据类型为 np.uint8 的全 1 数组。 

4. full

  • np.full 是 numpy 的接口,用于创建一个指定形状的数组,并且数组中的元素全部为指定的值。
  • 这里创建了一个 8 行 8 列的数据类型为 np.uint8 的数组,数组中的元素全部为 10。 

5. identity

  • np.identity 是 numpy 的接口,用于创建一个指定维度的单位矩阵。
  • 这里创建了一个 4 行 4 列的单位矩阵,主对角线上元素为 1,其余元素为 0。

6. eye

  • np.eye 是 numpy 的接口,用于创建一个二维数组,在对角线上的元素为 1,其余元素为 0。
  • 它接受三个参数,第一个参数 5 表示行数,第二个参数 7 表示列数,k=3 表示主对角线的偏移量。在这个例子中,创建了一个 5 行 7 列的数组,从第 3 条对角线上开始元素为 1(即从左上角开始向右下偏移 3 个位置的对角线上元素为 1),其余元素为 0。 

检索与赋值

import numpy as np
import cv2

# 创建全0矩阵
img = np.zeros((480,640,3), np.uint8)

# 从矩阵中读取某个元素的值
print(img[100,100])

# 向矩阵中某个元素赋值
count = 0
while count < 400 :
    img[count,100] = 255
    count = count + 1

cv2.imshow('img', img)
cv2.waitKey(0)

代码中 print(img[100,100]) 打印的是 BGR三个值,表示窗口坐标(100,100)像素点的值。

循环给矩阵赋值,将黑色改为白色,从坐标(0,100)开始,一直到(399,100),在窗口中表现为一条白色的线:

其它赋值方式: 

img[100,100,0] = 255, 表示赋值为蓝色;

img[100,100,1] = 255,表示赋值为绿色。

img[100, 100] = [0, 0, 255], 表示赋值为红色。


http://www.kler.cn/a/504074.html

相关文章:

  • SpringBoot配置文件
  • 【Linux 之一 】Linux常用命令汇总
  • 【Rust】错误处理机制
  • Leetcode - 周赛431
  • Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)
  • 《自动驾驶与机器人中的SLAM技术》ch2:基础数学知识
  • Java Stream流操作List全攻略:Filter、Sort、GroupBy、Average、Sum实践
  • 在使用 GitLab API 时,如果只能获取少量的 Merge Request(MR)信息,而没有完整的数据
  • ubuntu 下生成 core dump
  • 2025制定一个高级java开发路线:分布式系统、多线程编程、高并发经验
  • SQL 详解数据库
  • Spring Boot中如何处理跨域请求(CORS)
  • 【Linux】Linux基础命令(二)
  • 《Openlayers零基础教程》第六课:地图控件
  • 《重生到现代之从零开始的数据结构生活》——单链表
  • MySQL:表的内外连接
  • Python爬虫基础——IP反爬虫的应对
  • 工业互联网项目开发工作流及各阶段核心关注点
  • 如何通过openssl生成.crt和.key
  • 如何入门编程
  • CNN张量输入形状和特征图
  • Ubuntu 20.04 安装Cuda 12.2版本踩坑记录
  • 微服务中的日志管理中间件的使用和管理
  • ​​​​​​​​​​​​​​★3.3 事件处理
  • 如何使用PHP构建IoC容器,实现依赖注入!
  • 我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时