cv2邊緣檢測 填充 機器視覺技術 一 邊緣提取

2021-10-14 01:37:37 字數 3134 閱讀 1096

而在機器視覺中,乙個非常基礎的操作就是影象處理,而在影象處理中有乙個十分重要的知識就是邊緣提取。邊緣提取,指數字影象處理中,對於輪廓的乙個處理。對於邊界處,灰度值變化比較劇烈的地方,就定義為邊緣。也就是拐點,拐點是指函式發生凹凸性變化的點。和高數的導數有聯絡,將某個指定的物體的邊緣進行提取出來。

本次實驗中要用到的邊緣提取技術是python+opencv,python是一種很方便的高階程式語言,**量少,而opencv是乙個基於bsd許可發行的跨平台計算機視覺庫,可以執行在linux、windows、android和mac os作業系統上。它輕量級而且高效——由一系列 c 函式和少量 c++ 類構成,同時提供了python、ruby、matlab等語言的介面,實現了影象處理和計算機視覺方面的很多通用演算法。用python+opencv可以很方便地進行邊緣提取操作。從而感受機器視覺技術在現實中的實際應用。

opencv_python是open配合python執行的工具,在**

安裝成功後如下:

(3) 在sublime配置python

(4) 對影象進行閾值分割並反色

import cv2

# 讀取本相對路徑下的initial.bmp檔案

image = cv2.imread ("initial.bmp")

# 將image對應影象在影象視窗顯示出來

cv2.imshow('initial',image)

# waitkey使視窗保持靜態直到使用者按下乙個鍵

cv2.waitkey(0)

對影象進行閾值分割,閾值設定為80,得到二值化灰度圖,**為:

# 對影象進行閾值分割,閾值設定為80,得到二值化灰度圖

ret,image1 = cv2.threshold(image,80,255,cv2.thresh_binary)

cv2.imshow('grayscale',image1)

將影象進行反色,**如下:

# 將影象進行反色

image2 = image1.copy() # 複製

for i in range(0,image1.shape[0]): #image.shape表示影象的尺寸和通道資訊(高,寬,通道)

for j in range(0,image1.shape[1]):

image2[i,j]= 255 - image1[i,j]

cv2.imshow('colorreverse',image2)

(5) 邊緣提取

下面就是邊緣提取了,用findcontours差影法或者canny方法檢測邊緣,用原影象減去腐蝕後的收縮影象,提取邊緣。**如下:

# 邊緣提取

img = cv2.cvtcolor(image2,cv2.color_bgr2gray)

canny_img_one = cv2.canny(img,300,150)

canny_img_two = canny_img_one.copy() # 複製

for i in range(0,canny_img_one.shape[0]): #image.shape表示影象的尺寸和通道資訊(高,寬,通道)

圖3-1 sublime中opencv顯示

圖3-2 轉為灰度圖

圖3-3 反色顯示

圖3-4 邊緣提取

由於python之前很熟練,且安裝比較繁瑣,因此這裡只研究有關進行機器視覺的問題。

(1)安裝python-opencv問題

圖4-1 正確安裝cv2

問題二:在安裝的時候遇到:

圖4-2 未找到opencv_python問題

在搜尋問題的時候發現是pip沒有更新,這個時候輸入pip install –upgrade pip成功了。

(2)**問題

問題三:

圖4-3 未能閾值切割問題

這個是之前的閾值分割函式:

cv2.threshold(image,80,255,cv2.thresh_binary)

應該有兩個返回值,其中的ret是獲得一些相關資訊進行設定的,也需要帶上。

問題四:

圖4-4 未能找到問題

這個問題是因為直接獲得讀取資訊的引數,是乙個讀取結果,需要先轉化為灰度圖才行,加上下面的第一行**即可。

img_gray = cv2.cvtcolor(image,cv2.color_rgb2gray)

# 對影象進行閾值分割,閾值設定為80,得到二值化灰度圖

ret,image1 = cv2.threshold(img_gray,80,255,cv2.thresh_binary)

# cv2.imshow('grayscale',image1)

CV2實現人臉檢測

僅僅提供人臉的檢測,不是識別 很簡潔.import cv2,tkinter,os os.environ cuda visible devices 0 可以要求顯示卡提供服務 cap cv2.videocapture 0 while cv2.waitkey 1 97 按a退出,說明下,這裡cv2必須和...

機器視覺 sobel運算元邊緣檢測

sobel演算法主要用於邊緣檢測,在技術上它是以離散型的差分運算元,用來運算影象亮度函式的梯度的近似值,sobel運算元是典型的基於一階導數的邊緣檢測運算元,由於該運算元中引入了類似區域性平均的運算,因此對雜訊具有平滑作用,能很好的消除雜訊的影響。sobel運算元對於象素的位置的影響做了加權,與pr...

機器視覺檢測技術之顏色視覺工具應用

顏色視覺工具是基於 機器視覺 檢測技術的檢測工具之一,其可提供色差測量 顏色監測 顏色識別 顏色檢測整套顏色視覺影象的視覺解決方案。顏色視覺工具的各項功能如下 顏色標定 根據色卡資料對顏色成像進行色度學標定 顏色測量 測量影象兩個區域顏色差異,包括cielab 色差和cmc修正色差 顏色檢測 實時監...