而在機器視覺中,乙個非常基礎的操作就是影象處理,而在影象處理中有乙個十分重要的知識就是邊緣提取。邊緣提取,指數字影象處理中,對於輪廓的乙個處理。對於邊界處,灰度值變化比較劇烈的地方,就定義為邊緣。也就是拐點,拐點是指函式發生凹凸性變化的點。和高數的導數有聯絡,將某個指定的物體的邊緣進行提取出來。
本次實驗中要用到的邊緣提取技術是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修正色差 顏色檢測 實時監...