【计算机视觉】人脸算法之图像处理基础知识(三)

图像处理基础知识(三)

1.图像二值化

顾名思义,图像二值化是指一张图像上只有两种大小的像素值,常用的是0和255,0表示背景,255表示前景。这种处理方式是非常重要的,大部分的图像处理都会经历该操作。

python 复制代码
import cv2

imgpath = "images/img1.jpg"
img = cv2.imread(imgpath, 0) #以灰度化的方式加载图像
img = cv2.resize(img, (img.shape[1]//2, img.shape[0]//2))
threshold,dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) #二值化操作
cv2.imshow("dst", dst)
cv2.waitKey(0) 

上述代码中,cv2.threshold中127为给定阈值,255表示最大值,cv2.THRESH_BINARY二值化类型,在此代码中表示将小于127的像素值置为0,大于等于127的置为255。二值化类型有非常多种,可详细查看该函数的用法。threshold返回阈值,我们给定的127,所以这个代码中是127。dst则是返回二值化图像。

python 复制代码
import cv2

imgpath = "images/img1.jpg"
img = cv2.imread(imgpath, 0) #以灰度化的方式加载图像
img = cv2.resize(img, (img.shape[1]//2, img.shape[0]//2))
threshold,dst = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) #自动求解阈值
print(threshold) #123.0
cv2.imshow("dst", dst)
cv2.waitKey(0) 

这是更加常用的一种方法,自动求解阈值,俗称大津法。此时我们将阈值设为0,而算法会自动找到最佳阈值,threshold=123.0

由于我们手动设置阈值和自动阈值很接近,所以二值化后的图像差异不明显。后种方法是我们更加常用的方法。

相关推荐
格林威5 分钟前
工业相机Chunk功能全解析:图像嵌入时间戳、编码器元数据(附堡盟C#代码)
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
搞科研的小刘选手23 分钟前
【华中师范大学、华南师范大学联合主办】第五届图像处理、目标检测与跟踪国际学术会议(IPODT 2026)
图像处理·目标检测·跟踪·学术会议·会议推荐
稚南城才子,乌衣巷风流1 小时前
ST 表(Sparse Table)算法详解:原理、实现与应用
算法
hold?fish:palm2 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle2 小时前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木2 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b2 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
这张生成的图像能检测吗3 小时前
(论文速读)SCNN:用于交通场景理解的空间CNN
人工智能·深度学习·目标检测·计算机视觉·道路线检测
危桥带雨3 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法