当前位置:   article > 正文

OpenCV-Python系列(二)—— 图像处理(灰度图、二值化、边缘检测、高斯模糊、轮廓检测)_使用opencv将图片转化为灰度图像 把灰度图像转化为二值度图像 使用foundcontours

使用opencv将图片转化为灰度图像 把灰度图像转化为二值度图像 使用foundcontours

一、【灰度图、二值化】

import cv2
img = cv2.imread("lz2.png")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)   # 灰度图
# 二值化,(127,255)为阈值
retval,bit_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('photo1',img)
cv2.imshow('photo2',gray_img)
cv2.imshow('photo3',bit_img)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

二、【边缘检测】

import cv2
img = cv2.imread("l2.png")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)   # 灰度图
img_b = cv2.Canny(img, 38,180,apertureSize=3)    # (38,180)为阈值
img_c = cv2.Canny(img, 38,180,apertureSize=5)
cv2.imshow('photo1',img)
cv2.imshow('photo2',img_b)
cv2.imshow('photo3',img_c)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

三、高斯滤波

import cv2
img = cv2.imread("lz2.png")
# 高斯滤波
blurred = cv2.GaussianBlur(img, (21, 21), 0)  #(21,21)越高越模糊,只能设置为奇数
cv2.imshow('photo1',img)
cv2.imshow('photo2',blurred)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

四、【轮廓检测】

【方法一:步骤】
第一步:载入图片
第二步:使用cv2.cvtcolor() 将图片转换为灰度图
第三步: 使用cv2.threshold将图片做二值化转换
第四步:使用cv2.findContours 找出图片的轮廓值
第五步:使用cv2.drawContours在图片上画上轮廓
第六步: 使用cv2.imshow 显示

import cv2
# 第一步,读入照片
img = cv2.imread("lz2.png")
contours_img = img.copy()
# 第二步,转灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)		# 转换为灰度图
# 第三步,二值化处理
retval,bit_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)		# 高斯滤波-去除噪音
# 第四步,寻找轮廓
cnts, hierarchy = cv2.findContours(bit_img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 第五步,绘画轮廓
ret_img = cv2.drawContours(contours_img, cnts, -1, (0, 0, 255), 3)
# 显示图片
cv2.imshow('photo',ret_img)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

【方法二:步骤】
第一步,读入照片 cv2.imread()
第二步,转灰度图 cv2.cvtColor()
第三步,高斯去噪 cv2.GaussianBlur()
第四步,边缘检测 cv2.Canny()
第五步,寻找轮廓 cv2.findContours()
第六步,绘画轮廓 cv2.drawContours()

import cv2
# 第一步,读入照片
img = cv2.imread("lz2.png")
contours_img = img.copy()
# 第二步,转灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)		# 转换为灰度图
# 第三步,高斯去噪
blurred_img = cv2.GaussianBlur(gray_img, (5, 5), 0)			# 高斯滤波-去除噪音
# 第四步,边缘检测
edged_img = cv2.Canny(blurred_img, 75, 200)					# Canny算子边缘检测
# 第五步,寻找轮廓
cnts, hierarchy = cv2.findContours(edged_img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 第六步,绘画轮廓
ret_img = cv2.drawContours(contours_img, cnts, -1, (0, 0, 255), 3)
# 显示图片
cv2.imshow('photo5',ret_img)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

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

闽ICP备14008679号