asp.net开发的网站,高端网站建设套餐,福建建设厅网站工程履约保险,WordPress移动端加搜索框一、环境
本文使用环境为#xff1a;
Windows10Python 3.9.17opencv-python 4.8.0.74
二、二值化算法
2.1、概述
在机器视觉应用中#xff0c;OpenCV的二值化函数threshold具有不可忽视的作用。主要的功能是将一幅灰度图进行二值化处理#xff0c;以此大幅降低图像的数…
一、环境
本文使用环境为
Windows10Python 3.9.17opencv-python 4.8.0.74
二、二值化算法
2.1、概述
在机器视觉应用中OpenCV的二值化函数threshold具有不可忽视的作用。主要的功能是将一幅灰度图进行二值化处理以此大幅降低图像的数据量从而突显出目标的轮廓。
具体来说函数threshold可以将图像上的像素根据阈值划分为两类大于或等于阈值的像素值被赋为最大值或最大灰度值而小于阈值的像素值则被赋为最小值或最小灰度值。这样的操作对于后续的特征提取和图像分析极为重要。例如我们可以通过设定不同的阈值来对图像进行不同程度的二值化处理以适应不同的应用场景。
然而虽然threshold函数在机器视觉应用中有着广泛的应用但其也存在一些缺点。例如它只能处理单通道的图像即灰度图像而不能直接处理彩色图像。此外选择合适的阈值也是一项挑战因为如果阈值选择不当可能会导致图像信息的丢失或者噪声的增加。
总的来说OpenCV中的二值化函数threshold在机器视觉应用中扮演着重要角色能够有效地简化图像数据并突出目标特征。但同时我们也需要注意其存在的一些局限性如仅支持灰度图像以及阈值选择的困难等。
2.2、函数API
OpenCV中的二值化函数threshold是一种将图像转换为二值图像的方法。它通过设置一个阈值将图像中的像素值分为两类大于阈值的像素值为255白色小于等于阈值的像素值为0黑色。这种方法常用于图像处理和计算机视觉任务中如边缘检测、轮廓识别等。
函数原型
cv2.threshold(src, thresh, maxval, type)
参数说明
src输入图像通常为灰度图像。thresh阈值用于将像素值分为两类。maxval最大值当像素值大于阈值时将其设置为此值。type阈值类型有以下几种选择 cv::THRESH_BINARY二值化大于阈值的像素值为255小于等于阈值的像素值为0。cv::THRESH_BINARY_INV反向二值化大于阈值的像素值为0小于等于阈值的像素值为255。cv::THRESH_TRUNC截断大于阈值的像素值保持不变小于等于阈值的像素值设置为阈值。cv::THRESH_TOZERO零化大于阈值的像素值保持不变小于等于阈值的像素值设置为0。cv::THRESH_TOZERO_INV反向零化大于阈值的像素值设置为0小于等于阈值的像素值保持不变。
三、代码演示
代码演示5种二值算法效果5中算法的区别这里再贴一次
cv::THRESH_BINARY二值化大于阈值的像素值为255小于等于阈值的像素值为0。cv::THRESH_BINARY_INV反向二值化大于阈值的像素值为0小于等于阈值的像素值为255。cv::THRESH_TRUNC截断大于阈值的像素值保持不变小于等于阈值的像素值设置为阈值。cv::THRESH_TOZERO零化大于阈值的像素值保持不变小于等于阈值的像素值设置为0。cv::THRESH_TOZERO_INV反向零化大于阈值的像素值设置为0小于等于阈值的像素值保持不变。
from __future__ import print_function
import cv2 as cv
import argparsemax_value 255
max_type 4
max_binary_value 255
# 这里有5种二值化算法在gui界面使用滑条选择
trackbar_type Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted
trackbar_value Value
window_name Threshold Demo
# 二值化
def Threshold_Demo(val):#0: Binary#1: Binary Inverted#2: Threshold Truncated#3: Threshold to Zero#4: Threshold to Zero Invertedthreshold_type cv.getTrackbarPos(trackbar_type, window_name)threshold_value cv.getTrackbarPos(trackbar_value, window_name)_, dst cv.threshold(src_gray, threshold_value, max_binary_value, threshold_type )cv.imshow(window_name, dst)
parser argparse.ArgumentParser(descriptionCode for Basic Thresholding Operations tutorial.)
parser.add_argument(--input, helpPath to input image., defaultdata/stuff.jpg) # 读取图片
args parser.parse_args()
src cv.imread(cv.samples.findFile(args.input))
if src is None:print(Could not open or find the image: , args.input)exit(0)
# 彩色图转灰度图
src_gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.namedWindow(window_name)
# 创建滑条
cv.createTrackbar(trackbar_type, window_name , 3, max_type, Threshold_Demo)
cv.createTrackbar(trackbar_value, window_name , 0, max_value, Threshold_Demo)
Threshold_Demo(0)
cv.waitKey() #0: Binary #1: Binary Inverted #2: Threshold Truncated #3: Threshold to Zero #4: Threshold to Zero Inverted