Python的opencv学习总结:

图像的基本操作:

亮度范围:0(黑)~255(白)

读取图像:使用import opencv as cv2 使用cv2.imread('图像名字')

显示图像:使用cv.imshow('图像窗口名',图像变量名)

cv2.waitKey(等待时间的毫秒级数)(如果为0的话则表示任意键终止);cv2.IMREAD_COLOR(彩色图);cv2.IMRED_GRAYSCALE(灰度图)

cv2.VideoCapture('视频名字')可以扑获摄像头,视频文件。通过while循环来将视频进行操作。

截取部分图像数据:图片参数[长度范围,宽度范围]

边界填充:cv2.copyMakeBorder(图像参数名,上填充宽度,下,左,右,填充方法)

填充方法有(1.复制法:BORDER_REPLICATE 2.反射法:BORDER_REFLECT 3.反射法BORDER_REFECT_101 4.外包装法 :BORDER_WRAP 5.常量法BORDER_CONSTANT(使用需要设置常量值) )

数值计算:两个图片进行矩阵相加,同时相加的数取余256.

图像融合:两个图像必须shape值相同才能融合,将一个图像重新置shape值用到cv2.resize(图像参数,重置的shape值)。用cv2.addWeight(参数1,权重值1 ,参数2,权重值2,偏值)

图像处理:

图像阈值cv2.threshold(src(输入单通道图像),thresh(阈值),maxval(当超过阈值或者最小值,所赋予的值),type(二值化操作的类型))

type有五种:1. cv2.THRESH_BINARY超过阈值部分取maxval,否则取0。2. cv2.THRESH_BINARYINV 上一个函数的反转 3. cv2.THRESH_TRUNC大于阈值部分设为阈值,否则不变 4.cv2.THRESH_TOZERO大于阈值部分不改变,否则变为阈值 。5.cv2.THRESH_TOZERO_INV上一个的反转。

图像平滑:均值滤波(简单的平均卷积操作)cv2.blur(图像参数名,范围)。方框滤波(和均值一样,但容易越界)。高斯滤波(满足高斯分布的)。中值滤波(用中值替代)。

形态学的腐蚀操作:cv.erode(图像参数名,kernel,迭代次数)

膨胀操作:cv2.dilate(图像参数名,kernel,迭代次数)

开运算和闭运算:开:先腐蚀再膨胀cv2.morphologyEx(图像参数,cv2.MORPH_OPEN,kernel)。闭:先膨胀后腐蚀cv2.morphologyEx(,cv2.MORPH_CLOSE,)

梯度运算:膨胀-腐蚀。np.hstack(膨胀图像,腐蚀图像).

礼帽与黑帽:礼帽=原始输入-开运算结果cv2.morphologyEx(图像参数名,cv2.MORPH_TOPHAT,kernel)。黑帽=闭运算-原始输入cv2.morphologyEx(图像参数名,cv2.MORPH_BLACKHAT,kernel)。

图像梯度-sobel算子:cv2.Sobel(src,ddepth(图像深度),dx(水平),dy(竖直),ksize(sobel算子的大小))。convertScaleAbs(参数)(取复数的绝对值)

Scharr算子:Scharr()相对于其他更敏感

laplacian算子:Lapalcian()

Canndy边缘检测:1.高斯滤波器滤除噪声 2.计算每个像素点的梯度强度和方向 3.应用非极大值抑制以消除边缘检测带来的杂散响应。 4. 应用双阈值检测来确定真实的和潜在的边缘。 5.通过抑制孤立的弱边缘最终完成边缘的检测。

 图像金字塔:高斯金字塔(向上采样(pyrUp())是放大,向下采样(pyrDown())时缩小)如果上采样后再下采样恢复原来大小和原图有区别,像素变差。

拉普拉斯金字塔:

图像轮廓:cv2.findContours(imgs,mode,method)

mode:轮廓检索模式主要方式:RETR_TREE(检索所有的轮廓,并重构嵌套轮廓层次)

method:轮廓逼近方法:CHAIN_APPROX_NONE:(以Freeman链码的方式输出轮廓),CHAIN_APPROX_SIMPLE(只保留他们的终点部分)

轮廓近似:cv2.drawContours(轮廓信息,近似值,TRUE)

你可能感兴趣的:(opencv,python,计算机视觉)