OpenCV for python--基础知识篇(一)

之前将博客都写在CSDN上,为了方便更新博客内容(那边写完就没修改过/(ㄒoㄒ)/~~),准备重新整理,将之前的练习内容迁移到上,以便回顾知识和完善博客内容。现在工作上也有其他事情,写博客的时间相对要少,补个时间写点东西,原项目地址。

获取图像基本属性shape,size,type

import cv2

img=cv2.imread(test.jpg')
row,col,channel=img.shape   #获取图像的行、列、通道数
pixels=img.size  #图像像素数目
type_of_img=img.dtype   #图像的数据类型,常用的为uint8
ROI=img[0:200,0:200,:] #可以获取某一区域内的像素值,注意图像模型以及索引值范围

图像基本操作,图像通道拆分,合并

openCV中rgb模型下三通道分别为(B,G,R),和我们常用的(R,G,B)顺序不一样,所以为了在一些显示模块,如matplotlib等中显示正常,我们需要重新组合。

#拆分
b,g,r=cv2.split(img)#比较耗时
#合并
img=cv2.merge([r,g,b])
#获取单一通道,色彩图模型下channel值取0,1,2
img[:,:,channel]

图像扩充边界

cv2.copyMakeBorder(src,top,bottom,left,right,borderType,value)
参数详情:
top,bottom,left,right分别表示扩充的像素数目
borderType:cv2.BORDER_CONSTANT 添加有颜色的常数值边界 ,需设置value值
cv2.BORDER_REFLECT 边界元素镜像,如fedcba|abcdefgh|hgfedc
cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT 和上面类似,但有改动, gfedcb|abcdefgh|gfedcb,将边界值去除
cv2.BORDER_REPLICATE 重复最后一个元素,aaaaaa|abcdefgh|hhhhhhh
cv2.BORDER_WRAP 截断,复制 cdefgh|abcdefgh|abcdef

图像的算术运算--加、减、乘、除与位运算

加法:1). cv2.add(img1,img2,dst) 2). dst=img1+img2
减法:1). cv2.subtract(img1,img2,dst) 2). dst=img1-img2
注:图像加法或者减法要求两张图像大小一样,两种方法效果一样
乘法:dst=5*img #表示图像中每一个像素值乘以5,增加图片的亮度
除法:dst=img/5 #每一个像素值除以5,降低图像的亮度
与运算:dst=cv2.bitwise_and(roi,roi,mask) #需要借助掩模图像
非运算:dst=cv2.bitwise_not(img) #实现对二值图像的取反
或运算:dst=cv2.bitwise_or(img1,img2) #求两张图像中白色的交集
异或运算:cv2.bitwise_xor(img1,img2) #求两张图像颜色互反部分的交集
参考博客:openCV—Python(6)—— 图像算数与逻辑运算

你可能感兴趣的:(OpenCV for python--基础知识篇(一))