图像操作的基石 Numpy

  OpenCV中用到的矩阵都要转换为Numpy数组

创建矩阵

创建数组array()

a=np.array([2.3,4])  # 一维数组

c=np.array([[1.0,2.0],[3.0,4.0]])  # 二维数组

import numpy as np
# 通过array定义矩阵
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3], [4, 5, 6]])
print(a, b, sep='\n')

创建全0数组 zeros()/ones

# 定义zeros和ones矩阵
c = np.zeros((8, 8, 3), np.uint8)  # 表示的是8行8列的矩阵
d = np.zeros((8, 8), np.uint8)
f = np.ones((9, 5), np.uint8)
# (8,8,3)(行的个数,列的个数,通道数/层数),
# np.uint8是矩阵中的数据类型.每个元素的最大值是255
# 这里的3,对于RGB来说是有三个通道的,三个矩阵在一起,才形成彩色图片,如果是灰色图像值为0

创建全值的数组full()

g = np.full((7, 9), 255, np.uint8)
#  (7, 9, 3)表示的是(行的个数,列的个数,通道数、层数),255表示每个元素的数值
print(g)

创建单元数组identity/eye()

e = np.identity(4),表示4行4列的单位阵

import numpy as np
e = np.identity(4)  # 表示4行4列的单位阵
z = np.eye(5, 3)  # 表示5行3列的单位阵
c = np.eye(5, 7)  # 表示5行7列的单位阵
v = np.eye(5, 7, k=3)  # 表示5行7列的单位阵,从第k+1行开始。
print(e, z, c, v, sep='\n')

 检索与赋值

1.[y,x,channel]与通常使用的不一样,y在前,x在后面。

2.操作矩阵元素的每个索引值是从0开始的不是1开始的。

import cv2
import numpy as np
img = np.zeros((480, 640, 3), np.uint8)
print(img[100, 100])
# 从矩阵中读元素的值
count = 0
n = 100
y = 100
# 向矩阵中某个元素赋值
while count < 200:
    img[100, count, 0] = 255
    # BGR是三颜色通道,这里颜色通道填0就是blue,1就是green,2就是red
    #  或者这里可以写成img[100, count] = [255,0,0]这里面的顺序按照BGR排列
    img[count, 100] = [0, 255, 0]
    count = count+1
while 100 <= n < 200:
    img[y, n] = [0, 0, 255]
    n += 1
    y = n
cv2.imshow('color', img)
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    cv2.destroyAllWindows()

 获取子矩阵(ROI)region of image

[y1:y2,x1:x2]从y1到y2,x1到x2

[:,:] 整个图像的矩阵元素

import cv2
import numpy as np
img = cv2.imread('d:\\download\\1.jpg')
roi = img[100:200, 100:200]
roi[:, :] = [0, 0, 255]
roi[10:200, 10:200] = [0, 255, 0]
cv2.imshow('color', img)
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
cv2.destroyAllWindows()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值