圖像識別之邊緣識別


'''
    邊緣識別:物體的邊緣檢測是物體識別常用的手段。邊緣檢測常用亮度梯度方法。
            通過識別亮度梯度變化最大的像素點從而檢測出物體的邊緣。

        常用邊緣檢測算法相關API:
            # 索貝爾邊緣識別
            # cv.CV_64F:卷積運算使用數據類型為64位浮點型(保證微分的精度)
            # 1:在水平方向使用索貝爾偏微分識別邊緣
            # 0:不再垂直方向使用索貝爾偏微分識別邊緣
            # ksize:卷積核為5*5的方陣
            cv.Sobel(original, cv.CV_64F, 1, 0, ksize=5)
            # 拉普拉斯邊緣識別
            cv.Laplacian(original, cv.CV_64F)
            # Canny邊緣識別
            # 50:水平方向閾值  240:垂直方向閾值
            cv.Canny(original, 50, 240)
'''

import cv2 as cv

original = cv.imread("./ml_data/chair.jpg", cv.IMREAD_GRAYSCALE)
print(original.shape)
cv.imshow('Original', original)
# 索貝爾邊緣識別---水平方向
hsobel = cv.Sobel(original, cv.CV_64F, 1, 0, ksize=5)
cv.imshow('H-Sobel', hsobel)
# 索貝爾邊緣識別---垂直方向
vsobel = cv.Sobel(original, cv.CV_64F, 0, 1, ksize=5)
cv.imshow('V-Sobel', vsobel)
# 索貝爾邊緣識別---兩方向
sobel = cv.Sobel(original, cv.CV_64F, 1, 1, ksize=5)
cv.imshow('Sobel', sobel)

# 拉普拉斯邊緣識別
laplacian = cv.Laplacian(original, cv.CV_64F)
cv.imshow('Laplacian', laplacian)

# Canny邊緣識別
canny = cv.Canny(original, 50, 240)
cv.imshow('Canny', canny)
cv.waitKey()

 

'''
    亮度提升:OpenCV提供了直方圖均衡化的方式實現亮度提升,更有利於邊緣識別與物體識別模型的訓練。
        OpenCV直方圖均衡化相關API:
                # 彩色圖轉為灰度圖
                gray = cv.cvtColor(original, cv.COLOR_BGR2GRAY)
                # 直方圖均衡化
                equalized_gray = cv.equalizeHist(gray)

'''
import cv2 as cv

original = cv.imread('./ml_data/sunrise.jpg')
cv.imshow('Original', original)
# 彩色圖轉為灰度圖
gray = cv.cvtColor(original, cv.COLOR_BGR2GRAY)
cv.imshow('Gray', gray)
# 直方圖均衡化
equalized_gray = cv.equalizeHist(gray)
cv.imshow('Equalized_gray', equalized_gray)

# 直接對顏色亮度均衡化
yuv = cv.cvtColor(original, cv.COLOR_BGR2YUV)
yuv[..., 0] = cv.equalizeHist(yuv[..., 0])
equalized_color = cv.cvtColor(yuv, cv.COLOR_YUV2BGR)
cv.imshow('Equalized  Color', equalized_color)


cv.waitKey()

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM