OpenCV-Pythonシリーズ(2) - 画像処理(グレースケール、二値化、エッジ検出、ガウスぼかし、輪郭検出)

1. [グレースケール画像、二値化]

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)

ここに画像の説明を挿入

2. [エッジ検出]

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)

ここに画像の説明を挿入

3. ガウスフィルタリング

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)

ここに画像の説明を挿入

4. 【輪郭検出】

[方法 1: 手順]
ステップ 1: 画像を読み込みます
ステップ 2: cv2.cvtcolor() を使用して画像をグレースケール画像に変換します
ステップ 3: cv2.threshold を使用して画像を 2 値化に変換します
ステップ 4: cv2.findContours を使用します画像の輪郭値
ステップ 5: cv2.drawContours を使用して画像上に輪郭を描画します
ステップ 6: 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)

ここに画像の説明を挿入

[方法 2: 手順]
最初のステップは写真を読み取る cv2.imread()
2 番目のステップはグレースケール画像を変換する cv2.cvtColor()
3 番目のステップはガウスノイズ除去 cv2.GaussianBlur()
4 番目のステップはエッジ検出 cv2 .Canny()
5 番目のステップは輪郭を見つけることです cv2.findContours()
6 番目のステップは輪郭を描くことです 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)

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_51111267/article/details/129229122