使用Numpy来修改图像数据
admin 于 2018年04月11日 发表在 计算机视觉

1. 数组访问图像

使用imread读取图像内容后,可使用numpy来转换数组;若要改变某一个特定像素的颜色,可调用item()和itemset()两种方法。

1.1 item()方法

该函数由三个参数:x(或左)位置,y(或右)位置以及(x,y)位置的数组索引(注意,在BGR图像中,某一位置的数据是按照B、G和R这样顺序保存的三元数组),该函数能返回索引的位置的值。

import cv2

img = cv2.imread('00.png')
print(img.item(150,120,0))

1.2 itemset()方法

设置指定像素在指定通道的值( itemset() 由两个参数:一个三元组 [x,y和索引] 和 要设定的值 )

import cv2

img = cv2.imread('00.png')
img.itemset((150,120,0),255)
print (img.item(150,120,0))

1.3 使用numpy的两个原因:

(1) numpy.array处理这类问题时经过优化的;

(2) 通过NumPy优雅的方法能得到可读性更强的代码。

2. 图像拷贝

将区域[90:140, 200:240]的图像内容分配到区域[180:230, 210:250],确保区域大小相同

import cv2

img = cv2.imread('00.png')

my_roi = img[90:140, 200:240]
img[180:230, 210:250] = my_roi

cv2.imshow('image',img)
cv2.waitKey()
cv2.destroyAllWindows()

3. 图像的三个基本属性:

shape: 返回包含宽度、高度和通道数的数组

size: 图像像素的大小

datatype: 得到图像的数据类型

import cv2

img = cv2.imread('00.png')

print(img.shape)
print(img.size)
print(img.dtype)

输出结果:

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:opencv3,numpyarray