好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > Python實(shí)現(xiàn)Opencv cv2.Canny()邊緣檢測(cè)

Python實(shí)現(xiàn)Opencv cv2.Canny()邊緣檢測(cè)

熱門(mén)標(biāo)簽:銀川電話機(jī)器人電話 煙臺(tái)電話外呼營(yíng)銷系統(tǒng) 長(zhǎng)春極信防封電銷卡批發(fā) 企業(yè)彩鈴地圖標(biāo)注 上海正規(guī)的外呼系統(tǒng)最新報(bào)價(jià) 如何地圖標(biāo)注公司 電銷機(jī)器人錄音要學(xué)習(xí)什么 預(yù)覽式外呼系統(tǒng) 外賣地址有什么地圖標(biāo)注

這篇博客將介紹Canny邊緣檢測(cè)的概念,并利用cv2.Canny()實(shí)現(xiàn)邊緣檢測(cè);

  • Canny邊緣檢測(cè)是一種流行的邊緣檢測(cè)算法。它是由約翰F開(kāi)發(fā)的,是一個(gè)多階段的算法;
  • Canny邊緣檢測(cè)大致包含4個(gè)步驟:
    • 降噪(使用高斯濾波去除高頻噪聲);
    • 計(jì)算邊緣梯度和方向(SobelX、SobleY核在水平方向和垂直方向?qū)ζ交蟮膱D像進(jìn)行濾波,找到每個(gè)像素的邊緣梯度和方向);
    • 非最大抑制(在得到梯度大小和方向后,對(duì)圖像進(jìn)行全掃描,去除任何不需要的像素,這些像素可能不構(gòu)成邊緣。檢查像素是否在其梯度方向的鄰域中是局部最大值。否則,將被抑制(歸零)。簡(jiǎn)而言之,得到的結(jié)果是一個(gè)具有“細(xì)邊”的二值圖像。
    • 滯后閾值(決定哪些邊是真正的邊,哪些不是。為此需要兩個(gè)閾值minVal和maxVal,任何強(qiáng)度梯度大于maxVal的邊都肯定是邊,小于minVal的邊肯定是非邊,因此丟棄。位于這兩個(gè)閾值之間的邊根據(jù)其連通性被分類為邊或非邊。如果它們連接到“確定邊緣”像素,則它們被視為邊緣的一部分。否則,它們也會(huì)被丟棄。)

選擇滯后閾值minVal和maxVal是得到正確結(jié)果的關(guān)鍵。

1. 效果圖

原始圖 VS Canny檢測(cè)效果圖如下:

2. 源碼

# Canny邊緣檢測(cè)是一種流行的邊緣檢測(cè)算法。它是由約翰F開(kāi)發(fā)的,是一個(gè)多階段的算法;
# Canny邊緣檢測(cè)大致包含4個(gè)步驟:
# 
# 1.降噪(使用高斯濾波去除高頻噪聲);
# 2. 計(jì)算邊緣梯度和方向(SobelX、SobleY核在水平方向和垂直方向?qū)ζ交蟮膱D像進(jìn)行濾波,找到每個(gè)像素的邊緣梯度和方向);
# 3. 非最大抑制(在得到梯度大小和方向后,對(duì)圖像進(jìn)行全掃描,去除任何不需要的像素,這些像素可能不構(gòu)成邊緣。檢查像素是否在其梯度方向的鄰域中是局部最大值。否則,將被抑制(歸零)。簡(jiǎn)而言之,得到的結(jié)果是一個(gè)具有“細(xì)邊”的二值圖像。
# 4. 滯后閾值(決定哪些邊是真正的邊,哪些不是。為此需要兩個(gè)閾值minVal和maxVal,任何強(qiáng)度梯度大于maxVal的邊都肯定是邊,小于minVal的邊肯定是非邊,因此丟棄。位于這兩個(gè)閾值之間的邊根據(jù)其連通性被分類為邊或非邊。如果它們連接到“確定邊緣”像素,則它們被視為邊緣的一部分。否則,它們也會(huì)被丟棄。)
# 
# 選擇滯后閾值minVal和maxVal是得到正確結(jié)果的關(guān)鍵。
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('zly.jpg', 0)
edges = cv2.Canny(img, 80, 200)

plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(edges, cmap='gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])

plt.show()

參考 https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_canny/py_canny.html#canny

補(bǔ)充:OpenCV-Python 中 Canny() 參數(shù)

步驟:

  • 彩色圖像轉(zhuǎn)換為灰度圖像(以灰度圖或者單通道圖讀入)
  • 對(duì)圖像進(jìn)行高斯模糊(去噪)
  • 計(jì)算圖像梯度,根據(jù)梯度計(jì)算圖像邊緣幅值與角度
  • 沿梯度方向進(jìn)行非極大值抑制(邊緣細(xì)化)
  • 雙閾值邊緣連接處理
  • 二值化圖像輸出結(jié)果
"""
cv2.Canny(image,            # 輸入原圖(必須為單通道圖)
          threshold1, 
          threshold2,       # 較大的閾值2用于檢測(cè)圖像中明顯的邊緣
          [, edges[, 
          apertureSize[,    # apertureSize:Sobel算子的大小
          L2gradient ]]])   # 參數(shù)(布爾值):
                              true: 使用更精確的L2范數(shù)進(jìn)行計(jì)算(即兩個(gè)方向的倒數(shù)的平方和再開(kāi)放),
                              false:使用L1范數(shù)(直接將兩個(gè)方向?qū)?shù)的絕對(duì)值相加)。
"""

import cv2
import numpy as np  
 
original_img = cv2.imread("qingwen.png", 0)

# canny(): 邊緣檢測(cè)
img1 = cv2.GaussianBlur(original_img,(3,3),0)
canny = cv2.Canny(img1, 50, 150)

# 形態(tài)學(xué):邊緣檢測(cè)
_,Thr_img = cv2.threshold(original_img,210,255,cv2.THRESH_BINARY)#設(shè)定紅色通道閾值210(閾值影響梯度運(yùn)算效果)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))         #定義矩形結(jié)構(gòu)元素
gradient = cv2.morphologyEx(Thr_img, cv2.MORPH_GRADIENT, kernel) #梯度

cv2.imshow("original_img", original_img) 
cv2.imshow("gradient", gradient) 
cv2.imshow('Canny', canny)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

可調(diào)整閾值大小的程序

import cv2
import numpy as np
 
def CannyThreshold(lowThreshold):
    detected_edges = cv2.GaussianBlur(gray,(3,3),0)
    detected_edges = cv2.Canny(detected_edges,
                               lowThreshold,
                               lowThreshold*ratio,
                               apertureSize = kernel_size)
    dst = cv2.bitwise_and(img,img,mask = detected_edges)  # just add some colours to edges from original image.
    cv2.imshow('canny demo',dst)

lowThreshold = 0
max_lowThreshold = 100
ratio = 3
kernel_size = 3
 
img = cv2.imread('qingwen.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 
cv2.namedWindow('canny demo')
 
cv2.createTrackbar('Min threshold','canny demo',lowThreshold, max_lowThreshold, CannyThreshold)
 
CannyThreshold(0)  # initialization
if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()

 

到此這篇關(guān)于Python實(shí)現(xiàn)Opencv cv2.Canny()邊緣檢測(cè)的文章就介紹到這了,更多相關(guān)Opencv cv2.Canny()邊緣檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python OpenCV實(shí)現(xiàn)邊緣檢測(cè)
  • OpenCV中Canny邊緣檢測(cè)的實(shí)現(xiàn)
  • 使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測(cè)
  • OpenCV實(shí)現(xiàn)灰度、高斯模糊、邊緣檢測(cè)的示例
  • Python使用Opencv實(shí)現(xiàn)邊緣檢測(cè)以及輪廓檢測(cè)的實(shí)現(xiàn)
  • 如何利用Python 進(jìn)行邊緣檢測(cè)
  • python實(shí)現(xiàn)canny邊緣檢測(cè)
  • OpenCV半小時(shí)掌握基本操作之邊緣檢測(cè)

標(biāo)簽:上饒 佳木斯 珠海 盤(pán)錦 潮州 湖北 宜昌 西寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python實(shí)現(xiàn)Opencv cv2.Canny()邊緣檢測(cè)》,本文關(guān)鍵詞  Python,實(shí)現(xiàn),Opencv,cv2.Canny,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python實(shí)現(xiàn)Opencv cv2.Canny()邊緣檢測(cè)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Python實(shí)現(xiàn)Opencv cv2.Canny()邊緣檢測(cè)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 最原始的欲望燃文| GAY男男推油按摩| 男人和女人曰逼| 久久99九九99九九精品| 一区二区三区四区在线视频| 4388ⅹ全国最大色成网站免费| 欧美大尺寸suv视频| 黄色成人在线视频| 国产一区亚洲二区三区毛片 | 情趣道具play调教| 欧美白嫩少妇蜜桃AV| 一起碰一起噜一起| 高清印度性猛交xxx| 国产福利在线观看极品美女| [3D全彩H漫]丝袜人妻 | 韩国三级小视频| 曹查理三级全部电影| 好吊爽视频988gaocom| 四川少妇丰满A级毛片免费看| 欧美性bbbxxx| 家教的高级课程| 91福利精品老师国产自产在线| 欧美高清性XXXXHDvideosex| HD最新国产人妖TS视频| 免费男同全黄h全肉动漫| 丁香色婷婷| 欲成欢h| 69堂无码国产精品专区在线观看| 91精产国品一二三产区别沈先生 | 美国玩尿眼道videos| 国产美女一级A片免费| 国产?高潮?白浆?喷| 网红又黄又猛无码视频直播 | 91精品欧美一区二区三区| 免费无码婬片A片AAA毛片96| 国产日韩精品秘?入口| 欧美一级特黄A片免费看视频| 爱你电影免费观看| 女人18毛片a级毛片免费| 摸老师大胸撕开老师丝袜| 国产一区二区三区AV探花88|