日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python图像边缘检测_python opencv实现图像边缘检测

發(fā)布時間:2025/4/16 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python图像边缘检测_python opencv实现图像边缘检测 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文利用python opencv進行圖像的邊緣檢測,一般要經(jīng)過如下幾個步驟:

1、去噪

如cv2.GaussianBlur()等函數(shù);

2、計算圖像梯度

圖像梯度表達的是各個像素點之間,像素值大小的變化幅度大小,變化較大,則可以認為是出于邊緣位置,最多可簡化為如下形式:

3、非極大值抑制

在獲得梯度的方向和大小之后,應(yīng)該對整幅圖像做一個掃描,去除那些非邊界上的點。對每一個像素進行檢查,看這個點的梯度是不是周圍具有相同梯度方向的點中最大的。如下圖所示:

4、滯后閾值

現(xiàn)在要確定那些邊界才是真正的邊界。這時我們需要設(shè)置兩個閾值:minVal 和maxVal。當圖像的灰度梯度高于maxVal 時被認為是真的邊界,那些低于minVal 的邊界會被拋棄。如果介于兩者之間的話,就要看這個點是否與某個被確定為真正的邊界點相連,如果是就認為它也是邊界點,如果不是就拋棄。如下圖:

在Python Opencv接口中,提供了Canny函數(shù),可以對圖像進行一鍵執(zhí)行邊緣檢測。

接下來,利用Canny函數(shù)進行邊緣檢測的實驗。

Canny函數(shù)需要指定幾個參數(shù):

1、需要進行邊緣檢測的原圖

2、閾值下限

3、閾值上限

我們?yōu)榱四軌蚩吹讲煌撝捣秶鷮吘墮z測結(jié)果的影響,設(shè)置了兩個滑動條,來分別表示閾值上下限。

完整代碼如下:

# -*- coding: utf-8 -*-

"""

Created on Thu Sep 13 14:23:32 2018

@author: Leon

內(nèi)容:

對圖片進行邊緣檢測;

添加滑動條,可自由調(diào)整閾值上下限。

"""

import cv2

import numpy as np

def nothing(x):

pass

cv2.namedWindow('Canny',0)

# 創(chuàng)建滑動條

cv2.createTrackbar('minval','Canny',0,255,nothing)

cv2.createTrackbar('maxval','Canny',0,255,nothing)

img = cv2.imread('Tree.jpg',0)

# 高斯濾波去噪

img = cv2.GaussianBlur(img,(3,3),0)

edges =img

k=0

while(1):

key = cv2.waitKey(50) & 0xFF

if key == ord('q'):

break

# 讀取滑動條數(shù)值

minval = cv2.getTrackbarPos('minval','Canny')

maxval = cv2.getTrackbarPos('maxval','Canny')

edges = cv2.Canny(img,minval,maxval)

# 拼接原圖與邊緣監(jiān)測結(jié)果圖

img_2 = np.hstack((img,edges))

cv2.imshow('Canny',img_2)

cv2.destroyAllWindows()

效果如圖:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的python图像边缘检测_python opencv实现图像边缘检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。