opencv-python笔记3-ROI和通道操作图像属性
1.感兴趣区域(ROI)
对某一特定区域感兴趣,该区域被称为感兴趣区域(Region of Interest,ROI)
import cv2
a = cv2.imread('C:\\8.png',-1)
piece = a[300:600,300:600]
cv2.imshow('all',a)
cv2.waitKey(0)
cv2.imshow('piece',piece)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上代码就是获取一个ROI的示例
运行结果如下
import cv2
import numpy as np
#获取ROI
a = cv2.imread('C:\\me.jpg',-1)
pkqFace = a[1840:1940,2320:2470]
cv2.imshow('pkqFace',pkqFace)
cv2.waitKey(0)
cv2.destroyWindow('pkqFace')
#给图片换一部分
b = cv2.imread('C:\\pkq.jpg',-1)
b[500:600,370:520] = pkqFace
cv2.imshow('pkqme',b)
cv2.waitKey(0)
cv2.imwrite('C:\\newpica.jpg',b)
cv2.destroyWindow('pkqme')
#给图片部分打码
ma = np.random.randint(0,256,(100,150,3))
b[500:600,370:520] = ma
cv2.imshow('dama',b)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码第二个运行结果如下
2.通道操作
1)通过索引拆分通道
b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
2) 通过函数拆分
函数cv2.split()能够拆分图像的通道。
b,g,c = cv2.split(img)
这段代码和上面的效果是一毛一样的。
3)通道合并
通道合并是通道拆分的逆过程,函数cv2.merge()可以实现图像通道的合并
conbine = cv2.merge([b,g,r])
3.获取图像属性
- shape:返回行、列、通道数的数组,如果是二值图像或灰度图像,仅返回行数和列数。
- size:返回图像的像素数目
- dtype:返回图像的数据类型
img.shape
img.size
img.dtype