使用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