赞
踩
OpenCV采用的格式为H×W×C,即高度×宽度×通道数,通道顺序为BGR,这与Python的Pillow库(RGB)不同。
读图、展示和保存主要会用到三个函数,分别为cv2.imread()、cv2.imshow()和cv2. imwrite()。
img = cv2.imread(‘img_name’[,mode])
第二个参数,表示读取图片返回的形式,有三种选择:cv2.IMREAD_COLOR、cv2.IMREAD_GRAYSCALE和cv2.IMREAD_UNCHANGED,其中IMREAD_UNCHANGED表示不变。另外也可以使用数字来表达读图模式,比如1,0或−1分别表示COLOR、GRAYSCALE和UNCHANGED。
cv2.imshow([‘name’],img,)
name表示窗口名字。
cv2. imwrite(’img_name’,img)
OpenCV提供了基本的线条操作,即画直线、画矩形、画圆、画椭圆、画文字。
OpenCV提供了基本的几何操作,如平移、旋转、缩放、翻转、裁剪、位操作
cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
->参数M为np.float32([[1,0,x],[0,1,y]]),表示向[1,0]方向移动x像素,向[0,1]方向移动y像素。
cv2.getRotationMatrix2D(center,angle,b)获得选择矩阵M。
参数说明:
1、center为旋转时固定的点
2、angle为旋转角度
3、b为图片缩放尺度,1表示保持原图大小
然后使用cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))进行仿射变换,完成旋转。
cv2.resize(image,b,a)
缩放操作主要为变换图片大小可使用cv2.resize()函数,该函数可使用的参数有三个:第一个参数为图像对象,第二个参数为缩放尺寸,第三个参数为插值选项,常用的插值选项有:
对于OpenCV而言,官方建议缩小使用cv2.INTER_AREA,放大使用cv2.INTER_LINEAR。cv2.INTER_CUBIC相对较慢,如果不特别指出,cv2.resize会默认使用cv2. INTER_LINEAR插值方式。
翻转分为水平翻转和垂直翻转,API为cv2.flip(image,number),第二个参数1表示水平翻转,0表示垂直翻转,−1表示水平加垂直翻转
裁剪使用NumPy中的切片操作即可,即cropped_image=image[x1:x2,y1:y2]。
位操作是在灰度图像素级别的布尔运算,可对两张图片分别做交集、并集、异或操作。
cv2.bitwise_and(img1,img2,mask = mask) 与操作
cv2.bitwise_or(img1,img2,mask = mask)) 或操作
cv2.bitwise_xor(img1,img2,mask = mask)) 异或操作
cv2.bitwise_not (img1,img2,mask = mask)) 非操作
mask(起遮罩效果)可以让我们只关注图像的某一区域,可以称作为感兴趣区域(RoI,Regoin of Interest)。bitwise_and只关注mask中被打开的区域(此处是值为255的区域).
分离主要使用split方法,融合则用merge方法。
(B,G,R) = cv2.spilt(image)
image = cv2.merge([B,G,R])
Opencv不仅有RGB颜色空间,还有HSV、L×a×b等颜色空间。HSV空间表达比RGB表达更加接近人类对色彩的感知,而L×a×b比HSV更胜一筹。
颜色空间转换主要使用cv2.cvtColor函数,第一个参数为需要进行转换的图像对象,第二个为颜色空间转换形式。常用的有cv2.COLOR_BGR2GRAY、cv2.COLOR_ BGR2HSV
OpenCV使用cv2.calcHist方法来计算直方图,参数有images、channels、mask、histSize和ranges。其中,images为图像列表,如[image];channels为通道索引,比如灰度图为[0],彩色图用[0,1,2];mask参数如果提供,则只计算mask大于0的区域,不使用则传None即可;histSize针对所统计通道设置区间数,如彩色三通道[8,8,8];ranges为像素点值域,对于RGB,为[0,256],其他空间请参考对应值域。
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。