導航:首頁 > 編程語言 > pythonopencvmask

pythonopencvmask

發布時間:2025-02-28 00:47:36

python,如何實現圖片中特定區域模糊

使用Python可以很方便地實現圖片中特定區域的模糊。下面是一個簡單的示例代碼,可以實現對圖片中指定區域的高斯模糊:

import cv2
# 讀取圖片
img = cv2.imread('test.jpg')
# 指定模糊區域
x, y, w, h = 100, 100, 200, 200
roi = img[y:y+h, x:x+w]
# 對模糊區域進行高斯模糊
blur = cv2.GaussianBlur(roi, (25, 25), 0)
# 將模糊後的區域復制回原圖
img[y:y+h, x:x+w] = blur
# 顯示結果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在這段代碼中,我們首先使用OpenCV庫讀取了一張圖片。然後,我們指定了一個矩形區域,該區域的左上角坐標為(x, y),寬度為w,高度為h。接著,我們使用cv2.GaussianBlur函數對該區域進行高斯模糊,模糊半徑為(25, 25)。最後,我們將模糊後的區域復制回原圖,並顯示結果。
需要注意的是,這段代碼中的模糊區域是一個矩形,如果需要對任意形狀的區域進行模糊,可以使用掩模(mask)來實現。具體實現方法可以參考OpenCV官方文檔。

Ⅱ 目標跟蹤(5)使用 Opencv 和 Python 進行對象跟蹤

在本教程中,我們將學習如何基於 Opencv 和 Python 實現對象跟蹤。

首先必須明確目標檢測和目標跟蹤有什麼區別:

我們將首先討論對象檢測,然後討論如何將對象跟蹤應用於檢測。

可能有不同的應用,例如,計算某個區域有多少人,檢查傳送帶上有多少物體通過,或者計算高速公路上的車輛。

當然,看過本教程後,您會很容易地想到數以千計的想孫腔沒法應用於現實生活或可能應用於工業。

在本教程中,我們將使用 3 個文件:

首先我們需要調用highway.mp4文件並創建一個mask:


正如您在示例代碼中看到的,我們還使用了 函數,該函數返回背景比率(background ratio),然後創建mask。

mask可視化結果:

但是,如您所見,圖像中有很多噪點。因此,讓我們通過刪除所有較小的元素來改進提取,並將我們的注意力集中在大於某個面積的對象上。


使用 OpenCV 的cv2.drawContours函數繪制輪廓,我們得到了這個結果。

就本教程而言,分析整個窗口並不重要。我們只對計算在某個點通過的所有車輛感興趣,因此,我們必須定義一個感興趣的區域 ROI 並僅在該區域應用mask。


結果可視化如下:

函數 cv2. 是在開始時添加的,沒有定義參數,現在讓我們看看如何進一步改進我們的結果。history是第一個參數,在這種情況下,它設置為 100,因為相機是固定的。varThreshold改為 40,因為該值越低,誤報的可能性就越大。在這種情況下,我們只對較大的對象感興趣。


在繼續處理矩形之前,我們對圖像進行了進一步的清理。為此,閾值函數就派上用場了。從我們的mask開始,我們告訴它我們只想顯示白色或黑色值,因此通過編寫254, 255,只會考慮 254 和 255 之間的值。

然後我們將找到的對象的坐標插入到 if 條件中並繪制矩形


這是最終結果:

我們現在只需導入和集成跟蹤功能。


一旦創建了對象,我們必須獲取邊界框的每個位置並將它們插入到單個數組中。

通過在屏幕上顯示結果,您可以看到所有通過 ROI 的通道是如何被識別的,則納以及它們的位置是如何插入到特定的數組中的。顯然,識別的摩托車越多,我們的數組就越大。

現在讓我們將帶圓行有位置的數組傳遞給tracker.update()。我們將再次獲得一個包含位置的數組,但此外,將為每個對象分配一個唯一的 ID。

從代碼中可以看出,我們可以使用 for 循環分析所有內容。此時我們只需要繪制矩形並顯示車輛 ID。

在圖像中,您可以看到結果


main.py


從視頻中也可以看到,我們已經獲得了我們在本教程開始時設置的結果。

但是,您必須將其視為練習或起點,因為關於這個主題有很多話要說,而本教程的目的只是讓您了解對象跟蹤的原理。

如果你想將 Object Tracking 集成到你的項目中,你應該使用更可靠和先進的對象檢測方法,以及跟蹤方法。

完整代碼地址:私信「333」直接獲取或者「鏈接」

Ⅲ 【Python學習蝴蝶書】第六章 圖像變換15-距離變換

距離變換專為二值單通道圖像設計,前景為非零,背景為零。此操作可識別並勾勒出前景形狀的核心結構。

在Python中,可使用cv2.distanceTransform函數實現距離變換。

函數參數如下:

src:輸入圖像,單通道二值8點陣圖像。

distanceType:距離類型,opencv提供多種計算方法,包括垂直、水平、對角線以及跳躍增量。

maskSize:可選3或5,需與distanceType搭配使用,也可自定義。

dst:輸出圖像,8位無符號整型或32位浮點型,單通道,尺寸與src相同。

dstType:輸出圖像類型,可為8位無符號整型或32位浮點型。

示例演示:多實例操作有助於深入理解距離變換原理。

Ⅳ 10 個 Python 圖像編輯工具

以下提到的這些 Python 工具在編輯圖像、操作圖像底層數據方面都提供了簡單直接的方法。

-- Parul Pandey

當今的世界充滿了數據,而圖像數據就是其中很重要的一部分。但只有經過處理和分析,提高圖像的質量,從中提取出有效地信息,才能利用到這些圖像數據。

常見的圖像處理操作包括顯示圖像,基本的圖像操作,如裁剪、翻轉、旋轉;圖像的分割、分類、特徵提取;圖像恢復;以及圖像識別等等。Python 作為一種日益風靡的科學編程語言,是這些圖像處理操作的最佳選擇。同時,在 Python 生態當中也有很多可以免費使用的優秀的圖像處理工具。

下文將介紹 10 個可以用於圖像處理任務的 Python 庫,它們在編輯圖像、查看圖像底層數據方面都提供了簡單直接的方法。

scikit-image 是一個結合 NumPy 數組使用的開源 Python 工具,它實現了可用於研究、教育、工業應用的演算法和應用程序。即使是對於剛剛接觸 Python 生態圈的新手來說,它也是一個在使用上足夠簡單的庫。同時它的代碼質量也很高,因為它是由一個活躍的志願者社區開發的,並且通過了 同行評審(peer review)。

scikit-image 的 文檔 非常完善,其中包含了豐富的用例。

可以通過導入 skimage 使用,大部分的功能都可以在它的子模塊中找到。

圖像濾波(image filtering):

使用 match_template() 方法實現 模板匹配(template matching):

在 展示頁面 可以看到更多相關的例子。

NumPy 提供了對數組的支持,是 Python 編程的一個核心庫。圖像的本質其實也是一個包含像素數據點的標准 NumPy 數組,因此可以通過一些基本的 NumPy 操作(例如切片、 掩膜(mask)、 花式索引(fancy indexing)等),就可以從像素級別對圖像進行編輯。通過 NumPy 數組存儲的圖像也可以被 skimage 載入並使用 matplotlib 顯示。

在 NumPy 的 官方文檔 中提供了完整的代碼文檔和資源列表。

使用 NumPy 對圖像進行 掩膜(mask)操作:

像 NumPy 一樣, SciPy 是 Python 的一個核心科學計算模塊,也可以用於圖像的基本操作和處理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模塊,它提供了在 n 維 NumPy 數組上的運行的函數。SciPy 目前還提供了 線性和非線性濾波(linear and non-linear filtering)、 二值形態學(binary morphology)、 B 樣條插值(B-spline interpolation)、 對象測量(object measurements)等方面的函數。

在 官方文檔 中可以查閱到 scipy.ndimage 的完整函數列表。

使用 SciPy 的 高斯濾波 對圖像進行模糊處理:

PIL (Python Imaging Library) 是一個免費 Python 編程庫,它提供了對多種格式圖像文件的打開、編輯、保存的支持。但在 2009 年之後 PIL 就停止發布新版本了。幸運的是,還有一個 PIL 的積極開發的分支 Pillow ,它的安裝過程比 PIL 更加簡單,支持大部分主流的操作系統,並且還支持 Python 3。Pillow 包含了圖像的基礎處理功能,包括像素點操作、使用內置卷積內核進行濾波、顏色空間轉換等等。

Pillow 的 官方文檔 提供了 Pillow 的安裝說明自己代碼庫中每一個模塊的示例。

使用 Pillow 中的 ImageFilter 模塊實現圖像增強:

OpenCV(Open Source Computer Vision 庫)是計算機視覺領域最廣泛使用的庫之一, OpenCV-Python 則是 OpenCV 的 Python API。OpenCV-Python 的運行速度很快,這歸功於它使用 C/C++ 編寫的後台代碼,同時由於它使用了 Python 進行封裝,因此調用和部署的難度也不大。這些優點讓 OpenCV-Python 成為了計算密集型計算機視覺應用程序的一個不錯的選擇。

入門之前最好先閱讀 OpenCV2-Python-Guide 這份文檔。

使用 OpenCV-Python 中的 金字塔融合(Pyramid Blending)將蘋果和橘子融合到一起:

SimpleCV 是一個開源的計算機視覺框架。它支持包括 OpenCV 在內的一些高性能計算機視覺庫,同時不需要去了解 位深度(bit depth)、文件格式、 色彩空間(color space)之類的概念,因此 SimpleCV 的學習曲線要比 OpenCV 平緩得多,正如它的口號所說,「將計算機視覺變得更簡單」。SimpleCV 的優點還有:

官方文檔 簡單易懂,同時也附有大量的學慣用例。

文檔 包含了安裝介紹、示例以及一些 Mahotas 的入門教程。

Mahotas 力求使用少量的代碼來實現功能。例如這個 Finding Wally 游戲 :

ITK (Insight Segmentation and Registration Toolkit)是一個為開發者提供普適性圖像分析功能的開源、跨平台工具套件, SimpleITK 則是基於 ITK 構建出來的一個簡化層,旨在促進 ITK 在快速原型設計、教育、解釋語言中的應用。SimpleITK 作為一個圖像分析工具包,它也帶有 大量的組件 ,可以支持常規的濾波、圖像分割、 圖像配准(registration)功能。盡管 SimpleITK 使用 C++ 編寫,但它也支持包括 Python 在內的大部分編程語言。

有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研領域中的應用,通過這些用例可以看到如何使用 Python 和 R 利用 SimpleITK 來實現互動式圖像分析。

使用 Python + SimpleITK 實現的 CT/MR 圖像配准過程:

pgmagick 是使用 Python 封裝的 GraphicsMagick 庫。 GraphicsMagick 通常被認為是圖像處理界的瑞士軍刀,因為它強大而又高效的工具包支持對多達 88 種主流格式圖像文件的讀寫操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。

pgmagick 的 GitHub 倉庫 中有相關的安裝說明、依賴列表,以及詳細的 使用指引 。

圖像縮放:

邊緣提取:

Cairo 是一個用於繪制矢量圖的二維圖形庫,而 Pycairo 是用於 Cairo 的一組 Python 綁定。矢量圖的優點在於做大小縮放的過程中不會丟失圖像的清晰度。使用 Pycairo 可以在 Python 中調用 Cairo 的相關命令

Pycairo 的 GitHub 倉庫 提供了關於安裝和使用的詳細說明,以及一份簡要介紹 Pycairo 的 入門指南 。

使用 Pycairo 繪制線段、基本圖形、 徑向漸變(radial gradients):

以上就是 Python 中的一些有用的圖像處理庫,無論你有沒有聽說過、有沒有使用過,都值得試用一下並了解它們。

via: https://opensource.com/article/19/3/python-image-manipulation-tools

作者: Parul Pandey 選題: lujun9972 譯者: HankChow 校對: wxy

閱讀全文

與pythonopencvmask相關的資料

熱點內容
擇吉日用什麼app 瀏覽:333
安卓轉蘋果王者什麼時間完成 瀏覽:810
linux文本編碼格式 瀏覽:661
浙江阿特拉斯壓縮機上門維修 瀏覽:627
自己創建的mc伺服器崩潰怎麼辦 瀏覽:156
什麼叫加密方法 瀏覽:201
linux時鍾調度 瀏覽:763
光碟加密文件怎麼設置 瀏覽:765
程序員頭痛圖 瀏覽:254
redis二級緩存源碼 瀏覽:711
游資大咖指標源碼 瀏覽:485
c4d的配置文件夾怎麼改位置 瀏覽:412
和平精英伺服器超時是什麼意思 瀏覽:609
怎麼查看工商銀行卡綁定了哪些app 瀏覽:159
linux調度程序 瀏覽:486
格力空調的壓縮機是哪裡的 瀏覽:153
常見的對稱和非對稱密碼演算法 瀏覽:247
javat方法 瀏覽:519
怎麼代理快手app極速版推廣 瀏覽:216
構成線的源碼 瀏覽:745