24.開(kāi)閉操作

import cv2 as cv
import numpy as np


"""
開(kāi)運(yùn)算:先進(jìn)性腐蝕再進(jìn)行膨脹就叫做開(kāi)運(yùn)算,它被用來(lái)去除噪聲。
閉運(yùn)算:先膨脹再腐蝕。它經(jīng)常被用來(lái)填充前景物體中的小洞,或者前景物體上的小黑點(diǎn)。
這里我們用到的函數(shù)是 cv2.morphologyEx()。
開(kāi)閉操作作用:
1. 去除小的干擾塊-開(kāi)操作
2. 填充閉合區(qū)間-閉操作
3. 水平或垂直線(xiàn)提取,調(diào)整kernel的row,col值差異。
比如:采用開(kāi)操作,kernel為(1, 15),提取垂直線(xiàn),kernel為(15, 1),提取水平線(xiàn),
"""

"""
其他形態(tài)學(xué)操作:
頂帽:原圖像與開(kāi)操作之間的差值圖像
黑帽:比操作與原圖像直接的差值圖像
形態(tài)學(xué)梯度:其實(shí)就是一幅圖像膨脹與腐蝕的差別。 結(jié)果看上去就像前景物體的輪廓
基本梯度:膨脹后圖像減去腐蝕后圖像得到的差值圖像。
內(nèi)部梯度:用原圖減去腐蝕圖像得到的差值圖像。
外部梯度:膨脹后圖像減去原圖像得到的差值圖像。
"""


def open_demo(image):
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow("binary", binary)
    """
    在前面的例子中我們使用Numpy構(gòu)建了結(jié)構(gòu)化元素,它是正方形的。
    但有時(shí)我們需要構(gòu)建一個(gè)橢圓形 / 圓形的核。為了實(shí)現(xiàn)這種要求,提供了OpenCV
    函數(shù)cv2.getStructuringElement()。你只需要告訴他你需要的核的形狀和大小。
    """
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    dst = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel=kernel)
    cv.imshow("open_demo", dst)


def close_demo(image):
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow("binary", binary)

    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    dst = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel=kernel)
    cv.imshow("open_demo", dst)


def other_morphology_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    dst = cv.morphologyEx(gray, cv.MORPH_BLACKHAT, kernel=kernel)
    cimg = np.array(gray.shape, np.uint8)
    cimg = 100
    dst = cv.add(dst, cimg)

    cv.imshow("top_hat_demo", dst)


def main():
    src = cv.imread("lena.jpg")
    # open_demo(src)
    # close_demo(src)

    # # 彩色圖像腐蝕,膨脹
    # img = cv.imread("lena.jpg")
    # cv.imshow("img", img)
    # kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    # # dst = cv.dilate(img, kernel=kernel)
    # dst = cv.erode(img, kernel=kernel)
    # cv.imshow("dilate", dst)

    # tophat, blackhat

    top_hat_demo(src)

    cv.waitKey(0)  # 等有鍵輸入或者1000ms后自動(dòng)將窗口消除,0表示只用鍵輸入結(jié)束窗口
    cv.destroyAllWindows()  # 關(guān)閉所有窗口


if __name__ == '__main__':
main()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在《《蘇東坡傳》 | 《一》母親,我長(zhǎng)大之后若做范滂這樣的人您愿意嗎?”》講述了蘇軾的母親陪伴孩子一起學(xué)習(xí),那么父...
    川葉閱讀 3,703評(píng)論 48 72
  • ……………花開(kāi)花落,魂落忘川猶在川&…………… 身姿妖艷,一襲血紅如霧,冷漠的雙瞳中彼岸尤其簡(jiǎn)潔雙眼透盡,殘忍,冰...
    獨(dú)淚欣欣閱讀 238評(píng)論 0 0
  • 小小“開(kāi)心果” 筱雅/文 隨著春節(jié)的已近尾聲,我家的小開(kāi)心果也隨著他的父母返回廣州了。 今年的春節(jié),注定了會(huì)有與眾...
    秋水淺語(yǔ)閱讀 390評(píng)論 0 2
  • Linux分區(qū) /boot分區(qū):/boot分區(qū)是操作系統(tǒng)的內(nèi)核及在引導(dǎo)過(guò)程中使用的文件(現(xiàn)在可以不用劃分這個(gè)區(qū)了)...
    jarWorker閱讀 1,297評(píng)論 0 2

友情鏈接更多精彩內(nèi)容