美文网首页程序员
OpenCV for Python 学习笔记(二)

OpenCV for Python 学习笔记(二)

作者: 值得_e36c | 来源:发表于2018-10-29 20:58 被阅读0次

    1.形态学操作

    图像腐蚀:主要针对二值图像

    1.定义

    2.函数调用:

    dst = cv2.erode(src,kernel,iterations)    (iterations表示迭代次数,kernel代表卷积核)

    kernel的创建:kernel=np.ones((5,5),np.uint8)

    图像膨胀(图像腐蚀的逆操作):

    1.大体印象

    2.函数调用:

    dst = cv2.dilate(src,kernel,iterations)

    开运算:

    1.定义:即先对图像进行腐蚀再进行膨胀

    2.函数调用:

    opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)  第二个参数代表开运算

    闭运算:

    1.定义:即先膨胀再腐蚀

    2.函数调用:

    closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)  第二个参数代表闭运算

    梯度运算:

    1.定义:梯度=膨胀-腐蚀

    函数调用:

    result = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)  第二个参数代表梯度运算

    图像礼帽:

    1.定义:礼帽=原图像-开运算

    2.函数调用:

    result = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)  第二个参数代表礼帽运算

    黑帽操作:

    1.定义:黑帽=闭运算-原图像

    result = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)  第二个参数代表黑帽运算

    2.图像梯度

    sobel理论基础:用来计算图像的边界

    sobel的计算

    sobel算子函数使用:

    1.dst = cv2.Sobel(src,ddepth,dx,dy,[ksize])

    其中对ddepth参数的赋值处理如下:

    2.对sobel的计算

    计算sobel的两种方式

    3.尽量不要用紫色代码部分的方法,得到的边界不清晰

    两种方法

    scharr算子函数使用:

    1.dst = Scharr(src,ddepth,dx,dy)

    可以用Sobel函数表示Scharr算子

    2.函数调用

    两种算子比较

    精确度权重不同

    Laplacian算子函数使用:

    计算原理

    1.函数调用

    dst = cv2.Laplacian(src,ddepth)

    函数应用

    3.canny边缘检测

    1.一般步骤:

    去噪(高斯滤波)——梯度(sobel)——非极大值抑制——滞后阈值

    2.函数使用:

    edges = cv2.Canny(image,threshold1,threshold2)  两个参数代表minVal和MaxVal两个参数越小,得到的边缘越细腻

    4.图像金字塔

    图像金字塔结构

    向下取样(缩小图像):从第i层到第i+1层

    1.对图像Gi进行高斯核卷积  2.删除所有偶数的行和列

    向上取样(放大图像):从第i+1层到第i层

    两个取样不是互逆操作

    向下取样函数及其使用

    dst = cv2.pyrDown(src);   得到原来大小的四分之一

    向上取样函数及其使用

    dst = cv2.pyrUp(src)

    拉普拉斯金字塔

    图像轮廓

    边缘检测能够检测出边缘,但是边缘是不连续的,把边缘连起来,成为轮廓。

    注意:OpenCV中将黑色默认为背景色

    函数调用:cv2.findContours()查找轮廓   cv2.drawContours()将找到的轮廓画到图像上

    image,contours,hierarchy = cv2.findContours(image,mode,method)

    image:修改后的二值图像     contours:代表轮廓

    mode属性取值:

    method属性取值:

    r = cv2.drawContours(o,contours,contourIdx,color[,thickness])

    各属性含义:

    轮廓绘制实例:

    相关文章

      网友评论

        本文标题:OpenCV for Python 学习笔记(二)

        本文链接:https://www.haomeiwen.com/subject/xhvltqtx.html