OpenCV 掩膜的应用
生活随笔
收集整理的這篇文章主要介紹了
OpenCV 掩膜的应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
掩膜是用選定的圖像、圖形或物體,對要處理的圖像進行遮擋,來控制圖像 處理的區域。
在數字圖像處理中,通常使用二維矩陣數組進行掩膜。掩膜是由0和1組成一個二進制圖像,利用該掩膜圖像要處理的圖像進行掩膜,其中1值的區域被處理,0 值區域被屏蔽,不會處理。
掩膜的主要用途是:
- 提取感興趣區域:用預先制作的感興趣區掩模與待處理圖像進行”與“操作,得到感興趣區圖像,感興趣區內圖像值保持不變,而區外圖像值都為0。
- 屏蔽作用:用掩模對圖像上某些區域作屏蔽,使其不參加處理或不參加處理參數的計算,或僅對屏蔽區作處理或統計。
- 結構特征提取:用相似性變量或圖像匹配方法檢測和提取圖像中與掩模相似的結構特征。
特殊形狀圖像制作
掩膜在遙感影像處理中使用較多,當提取道路或者河流,或者房屋時,通過一個掩膜矩陣來對圖像進行像素過濾,然后將需要的地物或者標志突出顯示出來。
使用cv.calcHist()來查找完整圖像的直方圖。
如果要查找圖像某些區域的直方圖,只需在要查找直方圖的區域上創建一個白色的掩膜圖像,否則創建黑色, 然后將其作為掩碼mask傳遞即可。
- src1、src2:為輸入圖像或標量,標量可以為單個數值或一個四元組
- dst:可選輸出變量,如果需要使用非None則要先定義,且其大小與輸入變量相同
- mask:圖像掩膜,可選參數,為8位單通道的灰度圖像,用于指定要更改的輸出圖像數組的元素,即輸出圖像像素只有mask對應位置元素不為0的部分才輸出,否則該位置像素的所有通道分量都設置為0
返回值為結果圖像矩陣,如果dst傳入了實參,則返回值與dst對應 實參相同。
import numpy as np import cv2 as cv from matplotlib import pyplot as plt# 1. 直接以灰度圖的方式讀入 img = cv.imread('./1.png', 0)# 2. 創建蒙版 mask = np.zeros(img.shape[:2], np.uint8) mask[100:150, 400:480] = 1 # 選定感興趣區域 1或255# 3.掩模 masked_img = cv.bitwise_and(img, img, mask=mask)# 4. 統計掩膜后圖像的灰度圖 mask_histr = cv.calcHist([img], [0], mask, [256], [0, 256])# 5. 圖像展示 fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8)) axes[0, 0].imshow(img, cmap=plt.cm.gray) axes[0, 0].set_title("原圖") axes[0, 1].imshow(mask, cmap=plt.cm.gray) axes[0, 1].set_title("蒙版數據") axes[1, 0].imshow(masked_img, cmap=plt.cm.gray) axes[1, 0].set_title("掩膜后數據") axes[1, 1].plot(mask_histr) axes[1, 1].grid() axes[1, 1].set_title("灰度直方圖") plt.show()掩膜后的數據
總結
以上是生活随笔為你收集整理的OpenCV 掩膜的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV 直方图的计算和绘制
- 下一篇: OpenCV 自适应的直方图均衡化