当前位置:   article > 正文

Opencv的基础操作_opencv基本操作

opencv基本操作

一、图像填充

首先定义图像显示函数:

  1. def cv_show(name, img):
  2. cv2.imshow(name, img)
  3. cv2.waitKey(0)
  4. cv2.destroyAllWindows()

图像读取:

img_cat = cv2.imread('cat.jpg')

定义图像填充的大小:

top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)

 接下来分别采用复制法、反射法、外包装法、常量法进行填充。

复制法:

  1. # 复制法,复制最边缘像素
  2. replicate = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)

反射法: 

  1. # 反射法,对感兴趣的图像中的像素在两边进行复制
  2. reflect = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REFLECT)

第二种反射法

  1. # 反射法,也就是以最边缘像素为周,对称
  2. reflect101 = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size,
  3. borderType=cv2.BORDER_REFLECT_101)

外包装法:

  1. # 外包装法
  2. warp = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_WRAP)

常量法:

  1. # 常量法,常数值填充,此处填充灰色
  2. constant = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_CONSTANT,
  3. value=0)

输出结果对比如下:

 

 二、形态学操作

首先读入原始图像:

pie = cv2.imread('pie.jfif')

 

 

定义卷积核:

kernel = np.ones((10, 10), np.uint8)

腐蚀函数:

dige_erosion = cv2.erode(pie, kernel=kernel, iterations=1)

输出结果如下:

 

膨胀函数:

dige_dilate = cv2.dilate(pie, kernel=kernel, iterations=1)

输出结果如下:

开运算:先腐蚀后膨胀

opening = cv2.morphologyEx(pie, cv2.MORPH_OPEN, kernel=kernel)

输出结果如下:

闭运算:先膨胀后腐蚀

closing = cv2.morphologyEx(pie, cv2.MORPH_CLOSE, kernel=kernel)

输出结果如下:

 

梯度:膨胀-腐蚀

gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)

输出结果如下:

礼帽:原始输入-开运算结果

tophat = cv2.morphologyEx(pie, cv2.MORPH_TOPHAT, kernel)

输出结果如下:

黑帽:闭运算-原始输入

blackhat = cv2.morphologyEx(pie, cv2.MORPH_BLACKHAT, kernel)

输出结果如下:

 三、图像平滑

传入原始图像:

均值滤波:简单的平均卷积操作

blur = cv2.blur(cat, (3, 3))

 方框滤波:基本和均值一样,可以选择归一化, normalize为true时就做归一化,和均值滤波一样

box = cv2.boxFilter(cat, -1, (3, 3), normalize=True)

 

 normalize为False时不做归一化,及不做均值处理,越界后取255

box = cv2.boxFilter(cat, -1, (3, 3), normalize=False)

 高斯滤波:高斯模糊的卷积核里的数值是满足高斯分布的,相当于更重视中间的

gaussian = cv2.GaussianBlur(cat, (3, 3), 1)

中值滤波:相当于用中值代替

median = cv2.medianBlur(cat, 3)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/773563
推荐阅读
相关标签
  

闽ICP备14008679号