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

图像处理基础知识(三)

1.图像二值化

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

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则是返回二值化图像。
在这里插入图片描述

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
在这里插入图片描述
由于我们手动设置阈值和自动阈值很接近,所以二值化后的图像差异不明显。后种方法是我们更加常用的方法。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-15 12:46:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-15 12:46:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-15 12:46:01       82 阅读
  4. Python语言-面向对象

    2024-06-15 12:46:01       91 阅读

热门阅读

  1. Python+Opencv是实现车牌自动识别

    2024-06-15 12:46:01       27 阅读
  2. 面试问题-除了threading还会哪种并发

    2024-06-15 12:46:01       36 阅读
  3. 媒体查询的屏幕尺寸范围

    2024-06-15 12:46:01       33 阅读
  4. LeetCode 7题:整数翻转(原创)

    2024-06-15 12:46:01       34 阅读
  5. 使用静态方法接受对象参数

    2024-06-15 12:46:01       29 阅读
  6. SpringBoot集成websocket

    2024-06-15 12:46:01       26 阅读
  7. 基于starknet构建应用链之Madara

    2024-06-15 12:46:01       31 阅读
  8. 算法训练营day59

    2024-06-15 12:46:01       32 阅读
  9. SpringBoot集成Elasticsearch实例

    2024-06-15 12:46:01       23 阅读
  10. 什么是JWT?为什么用JWT?JWT的实战案例

    2024-06-15 12:46:01       32 阅读
  11. Android EventLog简介

    2024-06-15 12:46:01       28 阅读