OpenCV函数详解51~60,含代码示例,可直接运行

opencv6

1.闭运算

(先膨胀,后腐蚀),关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接

import cv2
import numpy as np
o = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG",
               cv2.IMREAD_UNCHANGED)
kernel = np.ones((10, 10), np.uint8)
dilation = cv2.morphologyEx(o,cv2.MORPH_CLOSE,kernel,iterations=3)
cv2.imshow("o", o)
cv2.imshow("d", dilation)
cv2.waitKey()
cv2.destroyAllWindows()

2.梯度运算

(获得原始图像的边缘)

import cv2
import numpy as np
o = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG",
              cv2.IMREAD_UNCHANGED)
k = np.ones((5, 5), np.uint8)
r = cv2.morphologyEx(o, cv2.MORPH_GRADIENT, k)
cv2.imshow("o", o)
cv2.imshow("r", r)
cv2.waitKey()
cv2.destroyAllWindows()

3.礼帽运算

(获取图片的噪声信息,或者得到比原始图像边缘更亮的边缘信息)

import cv2
import numpy as np
o = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG",
              cv2.IMREAD_UNCHANGED)
k = np.ones((5, 5), np.uint8)
r = cv2.morphologyEx(o, cv2.MORPH_TOPHAT, k)
cv2.imshow("o", o)
cv2.imshow("r", r)
cv2.waitKey()
cv2.destroyAllWindows()

4.黑帽运算

(获取图像内部的小孔,或者前景色中的小黑点,或者得到比原始图像边缘更暗的边缘部分)

import cv2
import numpy as np
o = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG",
              cv2.IMREAD_UNCHANGED)
k = np.ones((5, 5), np.uint8)
r = cv2.morphologyEx(o, cv2.MORPH_BLACKHAT, k)
cv2.imshow("o", o)
cv2.imshow("r", r)
cv2.waitKey()
cv2.destroyAllWindows()

5.核函数

(用于返回一个用于形态学操作的指定大小和形状的结构元素)

import cv2
o = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG",
               cv2.IMREAD_UNCHANGED)
k1 = cv2.getStructuringElement(cv2.MORPH_RECT, (59, 59))
k2 = cv2.getStructuringElement(cv2.MORPH_CROSS, (59, 59))
k3 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (59, 59))
d1 = cv2.dilate(o, k1)
d2 = cv2.dilate(o, k2)
d3 = cv2.dilate(o, k3)
cv2.imshow("o", o)
cv2.imshow("d1", d1)
cv2.imshow("d2", d2)
cv2.imshow("d3", d3)
cv2.waitKey()
cv2.destroyAllWindows()

6.Sobel算子

一种离散的微分算子,该算子结合了高斯平滑和微分求导运算,该算子利用局部差分寻找边缘,计算所得的是一个梯度的近似值。

7.拷贝图像

image1.copy()

8.泛洪填充

def fill_binary():
    image = np.zeros([400, 400, 3], np.uint8)
    image[100:300, 100:300, :] = 255
    cv2.imshow("fill_binary", image)
    mask = np.ones([402, 402, 1], np.uint8)
    mask[101:301, 101:301] = 0
    cv2.floodFill(image, mask, (200, 200), (100, 2,255),cv2.FLOODFILL_MASK_ONLY)
    cv2.imshow("filled binary", image)

9.边缘检测

cv2.canny()

获取边缘

10.图像金字塔

降低图像分辨率(高斯金字塔)

拉普拉斯金字塔,可以恢复分辨率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值