Python-OpenCV图像阈值

本文详细介绍了Python中使用OpenCV进行图像阈值处理的方法,包括简单阈值、自适应阈值和Otsu's二值化。简单阈值通过设定单一阈值将像素分为黑白两部分;自适应阈值根据不同区域的亮度变化动态计算阈值,适用于光照不均匀的图像;Otsu's二值化则自动找到双峰图像的最佳阈值,简化了手动选取过程。

0x01. 简单阈值

简单阈值指的是当像素高于阈值时,给此像素赋予一个新值(可能是白色或黑色)。
OpenCV中提供函数为:
cv2.threshhold(src,thresh,maxval,type)。
src:原图像,图像应为灰度图。
thresh:对像素值进行分类的阈值。
maxval:当像素高于(或小于)阈值时应被赋予的新的像素值。
type:OpenCV中提供多种不同的阈值方法,包括

  • cv2.THRESH_BINARY 二值阈值化
  • cv2.THRESH_BINARY_INV 反向二值阈值化并反转
  • cv2.THRESH_TRUNC 截断阈值化
  • cv2.THRESH_TOZERO 超过阈值被置为0
  • cv2.THRESH_TOZERO_INV 低于阈值被置为0

    这里写图片描述

实例:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img=cv2.imread('pitt1.jpg',cv2.IMREAD_COLOR)

ret,new1=cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,new2=cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,new3=cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,new4=cv2.thres
PythonOpenCV结合是图像处理的有效手段。图像处理是计算机视觉领域的重要技术,而OpenCV作为功能强大的开源库,提供了众多用于图像处理和计算机视觉任务的函数与工具,还可与其他库如Numpy配合使用,让Python能处理OpenCV数组结构,满足实操作和工业需求[^3][^4]。 ### 学习步骤 首先要安装OpenCV库,然后导入库,接着学习读取和显示图像,之后执行常见的图像处理操作,如调整大小、裁剪、旋转和滤波等。掌握这些基本操作后,可进一步探索和应用更复杂的图像处理技术和算法[^1]。 ### 常见操作示例 以下是一些常见图像处理操作的示例代码: #### 读取和显示图像 ```python import cv2 # 读取图像 image = cv2.imread('image.jpg') # 显示图像 cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 调整图像大小 ```python import cv2 image = cv2.imread('image.jpg') # 调整图像大小 resized_image = cv2.resize(image, (500, 300)) cv2.imshow('Resized Image', resized_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 裁剪图像 ```python import cv2 image = cv2.imread('image.jpg') # 裁剪图像 cropped_image = image[100:300, 200:400] cv2.imshow('Cropped Image', cropped_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 旋转图像 ```python import cv2 import numpy as np image = cv2.imread('image.jpg') # 获取图像的高度和宽度 height, width = image.shape[:2] # 定义旋转中心、旋转角度和缩放因子 center = (width // 2, height // 2) angle = 45 scale = 1.0 # 获取旋转矩阵 rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale) # 应用旋转矩阵 rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height)) cv2.imshow('Rotated Image', rotated_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 图像滤波 ```python import cv2 import numpy as np image = cv2.imread('image.jpg') # 应用高斯滤波 blurred_image = cv2.GaussianBlur(image, (5, 5), 0) cv2.imshow('Blurred Image', blurred_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` ### 更多信息 OpenCV - Python库除了上述常见操作外,还提供了图像旋转、颜色转换、图像阈值处理、形态学操作等许多其他功能。可查阅OpenCV - Python的官方文档获取更多详细信息和示例代码[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值