OpenCV(基础补充)图像二值化
目錄
一、基礎理論
1、二值圖像概念
2、API介紹
二、圖像二值化(黑白化)步驟:
1、彩圖化灰度圖
2、灰度圖化黑白圖(二值化)
3、翻轉黑白部分
總代碼
參考資料
一、基礎理論
1、二值圖像概念
二值圖像(Binary Image)是指將圖像上的每一個像素只有兩種可能的取值或灰度等級狀態,人們經常用黑白、B&W、單色圖像表示二值圖像。
2、API介紹
def threshold(src: Any,thresh: Any,maxval: Any,type: Any,dst: Any = None) -> None
src:源圖像,可以為8位的灰度圖,也可以為32位的彩色圖像。(兩者由區別)
dst:輸出圖像
thresh:閾值
maxval:dst圖像中最大值
type:閾值類型,可以具體類型如下:
enum ThresholdTypes {THRESH_BINARY ? ? = 0, //黑白THRESH_BINARY_INV = 1, //黑白反轉THRESH_TRUNC ? ? ?= 2, //得到圖像多像素值THRESH_TOZERO ? ? = 3, //當前點值大于閾值時,不改變,否則設置為0THRESH_TOZERO_INV = 4, //當前點值大于閾值時,設置為0,否則不改變THRESH_MASK ? ? ? = 7,THRESH_OTSU ? ? ? = 8, //自適應閾值THRESH_TRIANGLE ? = 16 };
二、圖像二值化(黑白化)步驟:
彩色圖像——>灰度圖像——>二值圖像
1、彩圖化灰度圖
C++:
//灰度圖
void ToGray()
{// 轉為灰度圖cvtColor(img, grayImage, COLOR_BGR2GRAY);imshow("灰度圖像", grayImage);
}
python:
# 1、灰度圖像
imgray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 類型
cv.imshow('imggray', imgray)
2、灰度圖化黑白圖(二值化)
C++:?
//黑白圖(二值化)
void ToBin()
{// 將灰度圖二值化threshold(grayImage, binImage, 0, 255, THRESH_OTSU);imshow("二值化圖像", binImage);
}
python:
# 2、二進制圖像
ret, binary = cv.threshold(imgray, 127, 255, 0)
#閾值 二值圖像
cv.imshow('binary', binary)
3、翻轉黑白部分
ret, binary = cv.threshold(imgray, 127, 255, cv.THRESH_OTSU|cv.THRESH_BINARY_INV)
?
總代碼
C++:?
# 灰度圖與二值圖
# 注:二值圖必須由灰度圖轉化
import cv2 as cvimg = cv.imread('Resource/test.jpg')
cv.imshow('img', img)# 1、灰度圖像
imgray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 類型
cv.imshow('imggray', imgray)# 2、二進制圖像
ret, binary = cv.threshold(imgray, 127, 255, cv.THRESH_OTSU) #THRESH_OTSU:自適應閾值處理
# ret, binary = cv.threshold(imgray, 127, 255, cv.THRESH_OTSU|cv.THRESH_BINARY_INV)
#THRESH_OTSU:自適應閾值處理 cv.THRESH_TOZERO_INV:二值圖反轉(黑白反轉)
#閾值 二值圖像
cv.imshow('binary', binary)cv.waitKey(0)
python:
# 灰度圖與二值圖
# 注:二值圖必須由灰度圖轉化
import cv2 as cvimg = cv.imread('Resource/test.jpg')
cv.imshow('img', img)# 1、灰度圖像
imgray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 類型
cv.imshow('imggray', imgray)# 2、二進制圖像
ret, binary = cv.threshold(imgray, 127, 255, 0)
#閾值 二值圖像
cv.imshow('binary', binary)cv.waitKey(0)
參考資料
https://baike.baidu.com/item/%E4%BA%8C%E5%80%BC%E5%9B%BE%E5%83%8F/5166431?fr=aladdin
https://blog.csdn.net/weixin_42296411/article/details/80901080?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-2-80901080.pc_agg_rank_aggregation&utm_term=threshold%E5%87%BD%E6%95%B0&spm=1000.2123.3001.4430
總結
以上是生活随笔為你收集整理的OpenCV(基础补充)图像二值化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法(7-4)最短路径(迪杰斯
- 下一篇: OpenCV(八)形态学操作3--形态学