Python | OpenCV 建立遮罩與基本運算
📚 前言
在前一篇我們學會了 在圖片中加入文字標註。
這一篇要介紹 建立遮罩 (Mask) 與基本 bitwise 運算,這是影像處理中非常常見的技巧,可以用來選擇性處理影像區域,並理解邏輯運算在影像上的應用。
🎨 範例圖片

🎭 遮罩(Mask)
原理說明
遮罩是一張 黑白圖片,用來決定影像中哪些區域要顯示或隱藏:
- 白色 (255):保留區域
- 黑色 (0):遮蔽區域
搭配 cv2.bitwise_and()、cv2.bitwise_or() 等函式,可以選擇性地顯示影像的一部分。
💻 範例程式:建立圓形遮罩
1 | import cv2 |

圖:程式碼執行結果 — 使用圓形遮罩選擇性顯示影像
🔀 Bitwise 運算
原理說明
OpenCV 提供四種常見的位元運算函式,搭配遮罩可以靈活處理影像:
cv2.bitwise_and(img1, img2, mask)
交集運算,僅保留兩張圖片重疊的部分。cv2.bitwise_or(img1, img2, mask)
聯集運算,保留兩張圖片的所有部分。cv2.bitwise_xor(img1, img2, mask)
互斥運算,僅保留兩張圖片不同的部分。cv2.bitwise_not(img, mask)
非運算,將圖片顏色反轉(黑變白、白變黑)。

圖:邏輯運算示意圖 — AND、OR、XOR、NOT 的集合關係與遮罩效果對照
💻 範例程式:交集 (AND)
1 | import cv2 |

圖:程式碼執行結果 — 交集 (AND)
💻 範例程式:聯集 (OR)
1 | import cv2 |

圖:程式碼執行結果 — 聯集 (OR)
💻 範例程式:互斥 (XOR)
1 | import cv2 |

圖:程式碼執行結果 — 互斥 (XOR)
💻 範例程式:反轉 (NOT)
1 | import cv2 |

圖:程式碼執行結果 — 反轉 (NOT)
📊 效果比較
| 函式 | 運算 | 常見用途 |
|---|---|---|
bitwise_and() |
交集 | 遮罩、選擇性顯示影像區域 |
bitwise_or() |
聯集 | 合併影像、保留所有區域 |
bitwise_xor() |
互斥 | 強調差異、保留不同部分 |
bitwise_not() |
非 | 顏色反轉、產生遮罩 |
⚠️ 注意事項
- mask 必須是灰階圖,大小要與原始圖片一致
- 圖片大小:兩張圖片必須大小相同,否則需要先縮放
- 顏色格式:OpenCV 使用 BGR,遮罩為灰階
🎯 結語
這一篇我們學會了 建立遮罩與基本 bitwise 運算,能夠選擇性處理影像區域,並理解邏輯運算在影像上的應用。
在下一篇,我們將進一步探索 圖片合成、疊加與相減,學習如何利用 add()、addWeighted() 與 subtract() 來進行影像融合與差異化處理。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
