opencv读取图片

import cv2
img = cv2.imread('/path/to/image')
img.shape()

out:(heigh,width,color)

opencv截取图片

图片存储的第一维是图片的高度,第二维是图片的宽度,第三维是图片的颜色维度。所以我们去寻址的时候先对行寻址,再对列寻址。

cropImg = img[t:b, l:r]

opencv通道分离、合并

分离

b, g, r = cv2.split(img)

或者用numpy的数组

b = np.zeros((img.shape[0],img.shape[1]), dtype=img.dtype)  
g = np.zeros((img.shape[0],img.shape[1]), dtype=img.dtype)  
r = np.zeros((img.shape[0],img.shape[1]), dtype=img.dtype)  
b[:,:] = img[:,:,0]  
g[:,:] = img[:,:,1]  
r[:,:] = img[:,:,2]  

合并

nerged = cv2.merge([b, g, r])

或者numpy的方法

mergedByNp = np.dstack([b, g, r])

网上说numpy的组合方法不能用于opencv的其他函数,因为他们的组合方法不一样。点击这里

但是我做过一个试验显示这两种方法合并得到的结果是一样的。

mergedByNp.strides
out: (1920, 3, 1)
merged.strides
out: (1920, 3, 1)

Comments

comments powered by Disqus