日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【课题总结】OpenCV 抠图项目实战(5)自适应阈值抠图

發(fā)布時(shí)間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【课题总结】OpenCV 抠图项目实战(5)自适应阈值抠图 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(5)自適應(yīng)閾值摳圖

本系列是 Python 小白的課題作業(yè)《基于OpenCV 的圖像分割和摳圖》。
需要說(shuō)明的是,本系列并不能算是 OpenCV 的摳圖項(xiàng)目教程,只是以此為主題的課題報(bào)告。其中包括了一個(gè)較為完整的 PyQt 項(xiàng)目。

歡迎關(guān)注『Python 小白的項(xiàng)目實(shí)戰(zhàn) @ youcans』 原創(chuàng)作品
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(1)目錄摘要
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(2)摳圖緒論
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(3)摳圖綜述
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(4)固定閾值摳圖
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(5)自適應(yīng)閾值摳圖
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(6)色彩范圍摳圖
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(7)邊緣檢測(cè)
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(8)圖像輪廓
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(9)評(píng)價(jià)指標(biāo)
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(10)PyQt5 使用
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(11)算法實(shí)驗(yàn)平臺(tái)
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(12)源程序代碼


第三章 閾值摳圖

閾值處理方法直觀簡(jiǎn)單,是一種基本的圖像分割方法。

根據(jù)圖像的整體或部分信息適當(dāng)選擇閾值,像素值高于閾值時(shí)設(shè)為1/255,低于閾值時(shí)設(shè)為0,以此將圖像中感興趣的區(qū)域篩選出來(lái)生成掩模,再與原圖像合成即可得到摳圖圖像。

由于待處理圖像的灰度級(jí)數(shù)與其灰度直方圖是不確定的,對(duì)于不同的圖像、不同的目標(biāo)前景,需要選取適當(dāng)?shù)拈撝堤幚矸椒ㄟM(jìn)行圖像分割。本章采用固定閾值、自適應(yīng)閾值與色彩范圍三種方法進(jìn)行圖像摳圖處理。


3.2 自適應(yīng)閾值摳圖

在圖像摳圖的應(yīng)用中,噪聲和非均勻光照等因素會(huì)影響閾值算法的性能。對(duì)于很多圖像,使用固定閾值難以獲得理解的摳圖效果,就需要使用自適應(yīng)閾值處理方法,使用可變閾值處理。

自適應(yīng)閾值處理可以根據(jù)圖像不同區(qū)域的亮度分布,使用高斯濾波、移動(dòng)平均等方法計(jì)算其局部閾值,以此得到摳圖圖像。

OpenCV 提供了函數(shù) cv.adaptivethreshold()實(shí)現(xiàn)圖像的閾值處理。

函數(shù)說(shuō)明:

cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) → dst

參數(shù)說(shuō)明:

  • scr:輸入圖像,8位單通道圖像
  • dst:輸出圖像,大小和類(lèi)型與輸入圖像相同
  • maxValue:二值處理的最大值設(shè)置,通常為255
  • adaptiveMethod:自適應(yīng)閾值算法
    • cv.ADAPTIVE_THRESH_MEAN_C:閾值為矩形鄰域像素值的均值
    • cv.ADAPTIVE_THRESH_GAUSSIAN_C:閾值為矩形鄰域像素值的加權(quán)均值,默認(rèn)權(quán)值服從高斯分布
  • thresholdType:閾值類(lèi)型,可選項(xiàng)THRESH_BINARY或THRESH_BINARY_INV
  • blockSize:自適應(yīng)計(jì)算的鄰域大小,如:3, 5, 7等
  • C:偏移量

使用自適應(yīng)閾值進(jìn)行圖像摳圖的基本程序如下:

# MattingAdaptThresh.py # Copyright 2021 youcans, XUPT # Crated:2021-12-10import cv2 import numpy as np from matplotlib import pyplot as plt# 1. 讀取原始圖像 imgOri = cv2.imread("../images/lady983Green.jpg") # 讀取原始圖像 height, width, channels = imgOri.shape# 2. 從原始圖像提取綠色通道 imgGray = cv2.cvtColor(imgOri, cv2.COLOR_BGR2GRAY) # 彩色圖像轉(zhuǎn)換為灰度圖像 imgGreen = imgOri[:, :, 1] # imgGreen 為 綠色通道的 色彩強(qiáng)度圖 (注意不是原圖的灰度轉(zhuǎn)換結(jié)果) print(imgOri.shape, imgGray.shape, imgGreen.shape)# 3. 綠色通道轉(zhuǎn)換為二值圖像,生成遮罩 Mask、逆遮罩 MaskInv # colorThresh = 245 # 綠屏背景的顏色閾值 (注意研究閾值的影響) # ret, binary = cv2.threshold(imgGreen, colorThresh, 255, cv2.THRESH_BINARY) # 轉(zhuǎn)換為二值圖像,生成遮罩,摳圖區(qū)域黑色遮蓋# 自適應(yīng)閾值化能夠根據(jù)圖像不同區(qū)域亮度分布自適應(yīng)地改變閾值 # cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) -> dst # 參數(shù) adaptiveMethod: ADAPTIVE_THRESH_MEAN_C(均值法), ADAPTIVE_THRESH_GAUSSIAN_C(高斯法) # 參數(shù) thresholdType: THRESH_BINARY(小于閾值為0), THRESH_BINARY_INV(大于閾值為0) # 參數(shù) blockSize: 鄰域大小,正奇數(shù) # 參數(shù) C: 偏移量,一般取 0 binary = cv2.adaptiveThreshold(imgGreen, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 5, 0) binaryInv = cv2.bitwise_not(binary) # 按位非(黑白轉(zhuǎn)置),生成逆遮罩,摳圖區(qū)域白色開(kāi)窗,摳圖以外區(qū)域黑色# 4. 用遮罩進(jìn)行摳圖和更換背景 # 生成摳圖圖像 (前景保留,背景黑色) imgMatte = cv2.bitwise_and(imgOri, imgOri, mask=binaryInv) # 生成摳圖前景,標(biāo)準(zhǔn)摳圖以外的逆遮罩區(qū)域輸出黑色 # 將背景顏色更換為紅色: 修改逆遮罩 (摳圖以外區(qū)域黑色) imgReplace = imgOri.copy() imgReplace[binaryInv == 0] = [0, 0, 255] # 黑色區(qū)域(0/0/0)修改為紅色(BGR:0/0/255)plt.figure(figsize=(12, 8)) plt.subplot(231), plt.imshow(cv2.cvtColor(imgOri, cv2.COLOR_BGR2RGB)), plt.title("Origin image"), plt.axis('off') plt.subplot(232), plt.imshow(imgGray, cmap='gray'), plt.title("Gray image"), plt.axis('off') plt.subplot(233), plt.imshow(imgGreen, cmap='gray'), plt.title("Green channel level"), plt.axis('off') plt.subplot(234), plt.imshow(binary, cmap='gray'), plt.title("binary mask"), plt.axis('off') plt.subplot(235), plt.imshow(binaryInv, cmap='gray'), plt.title("inv-binary mask"), plt.axis('off') plt.subplot(236), plt.imshow(cv2.cvtColor(imgReplace, cv2.COLOR_BGR2RGB)), plt.title("BgColor changed"), plt.axis('off') plt.tight_layout()

使用自適應(yīng)閾值方法對(duì)單色背景圖像摳圖的結(jié)果如圖3.4所示。
對(duì)于確定顏色背景的藍(lán)屏摳圖,自適應(yīng)閾值方法的結(jié)果并沒(méi)有更好,但是仍然能很好地提取圖像特征,如果使用其它方法進(jìn)一步進(jìn)行處理,也可以得到滿(mǎn)意的摳圖效果。
而對(duì)于自然背景圖像摳圖,自適應(yīng)閾值方法的性能優(yōu)于固定閾值方法。



圖3.4 自適應(yīng)閾值摳圖法

【本節(jié)完】


版權(quán)聲明:

歡迎關(guān)注『Python 小白的項(xiàng)目實(shí)戰(zhàn) @ youcans』 原創(chuàng)作品

原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接:https://blog.csdn.net/youcans/article/details/122296231

Copyright 2022 youcans, XUPT

Crated:2022-01-01


歡迎關(guān)注『Python 小白的項(xiàng)目實(shí)戰(zhàn) @ youcans』 原創(chuàng)作品
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(1)目錄摘要
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(2)摳圖緒論
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(3)摳圖綜述
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(4)固定閾值摳圖
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(5)自適應(yīng)閾值摳圖
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(6)色彩范圍摳圖
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(7)邊緣檢測(cè)
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(8)圖像輪廓
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(9)評(píng)價(jià)指標(biāo)
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(10)PyQt5 使用
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(11)算法實(shí)驗(yàn)平臺(tái)
Python 小白的課題報(bào)告—OpenCV 摳圖項(xiàng)目實(shí)戰(zhàn)(12)源程序代碼

總結(jié)

以上是生活随笔為你收集整理的【课题总结】OpenCV 抠图项目实战(5)自适应阈值抠图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。