10- OpenCV:基本阈值操作(Threshold)

这篇具有很好参考价值的文章主要介绍了10- OpenCV:基本阈值操作(Threshold)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、图像阈值

2、阈值类型

3、代码演示


1、图像阈值

(1)图像阈值(threshold)含义:是将图像中的像素值划分为不同类别的一种处理方法。通过设定一个特定的阈值,将像素值与阈值进行比较,根据比较结果将像素分为两个或多个类别。

        阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation)

(2)阈值的API

double threshold(

InputArray src, // 输入灰度图像

OutputArray dst, // 输出图像

double thresh, // 预设的阈值

double maxval, // 大于等于阈值的像素设置的最大值

int type // 阈值类型,将小于阈值的像素设置为0,大于等于阈值的像素设置为最大值。

);

需要注意的是,阈值的选择对于图像处理的效果非常重要,可以根据具体需求调整阈值的数值和阈值类型。另外,threshold函数还可以进行自适应阈值处理、Otsu阈值处理等更高级的图像分割方法。

2、阈值类型

(1)阈值二值化(threshold binary):

将图像分为两个类别,通常是将灰度图像转换为黑白图像。像素值小于等于阈值的被归为一类,大于阈值的被归为另一类。

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。

10- OpenCV:基本阈值操作(Threshold),OpenCV,opencv,人工智能,计算机视觉,图像阈值

例子演示:(以二值化阈值为例)

假设有一幅灰度图像,像素值的范围是0到255。我们希望将图像中的目标物体分割出来,背景设置为黑色。

  1. 首先,选择一个合适的阈值,比如设定阈值为128。

  2. 对于每个像素,如果像素值<=128,则将其设置为黑色(0),否则设置为白色(255)。

  3. 重复上述步骤,对图像中的所有像素进行处理。

通过这个简单的二值化阈值处理,我们可以将图像中的目标物体与背景分离出来,得到一个二值图像,其中目标物体的像素值为白色,背景为黑色。

(2)阈值反二值化(threshold binary Inverted)

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。

10- OpenCV:基本阈值操作(Threshold),OpenCV,opencv,人工智能,计算机视觉,图像阈值

(3)截断 (truncate)

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值

10- OpenCV:基本阈值操作(Threshold),OpenCV,opencv,人工智能,计算机视觉,图像阈值

(4)阈值取零 (threshold to zero)

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。

10- OpenCV:基本阈值操作(Threshold),OpenCV,opencv,人工智能,计算机视觉,图像阈值

(5)阈值反取零(threshold to zero inverted)

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。

10- OpenCV:基本阈值操作(Threshold),OpenCV,opencv,人工智能,计算机视觉,图像阈值

(6)THRESH_OTSU:标志来应用Otsu阈值处理。

Otsu方法是一种自动确定图像阈值的算法,它可以根据图像的灰度分布自适应地选择最佳阈值。

threshold(grayImage, dst, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);

Otsu会自动进行阈值设置,所以预设值为0即可,最大为255.

(7)THRESH_TRIANGLE:标志进行阈值处理。

它可以根据图像的灰度分布自适应地选择最佳阈值。THRESH_TRIANGLE方法通过寻找直方图的双峰之间的谷底来确定阈值。

需要注意的是,THRESH_TRIANGLE方法适用于具有双峰灰度分布的图像,对于其他类型的图像效果可能不理想。因此,在使用THRESH_TRIANGLE阈值处理之前,建议先观察图像的灰度直方图,确保图像具有双峰特性。

总结:阈值分割有5种方法,阈值寻找有2种方法。

10- OpenCV:基本阈值操作(Threshold),OpenCV,opencv,人工智能,计算机视觉,图像阈值

另外可以了解:

(1)多级化阈值:将图像分为多个类别,每个类别代表一种特定的像素强度范围。通常用于图像分割和物体识别任务。

(2)自适应阈值:根据图像局部区域的统计特征来确定阈值,使得不同区域具有相对合适的阈值。适用于图像 不均匀光照或对比度变化较大的情况。

(3)基于直方图的阈值:利用图像的直方图信息来确定阈值,如Otsu's方法、基于最大类间方差、基于最小错误率等。

3、代码演示

(1)了解下createTrackbar,很实用一个接口。

createTrackbar是OpenCV中用于创建滑动条的函数。它可以在图像窗口中创建一个滑动条,通过滑动条来调整参数或阈值,实现实时交互。

int createTrackbar(

const String& trackbarname, // 滑动条的名称

const String& winname, // 滑动条所在的窗口名称

int* value, int count, // 初始值
TrackbarCallback onChange = 0, // 滑动条的最大值
void* userdata = 0 // 滑动条的回调函数

);

(2)例子展示

#include<opencv2\opencv.hpp>
#include<iostream>
#include <math.h>

using namespace cv;

// 图像阈值
Mat src, gray_src, dst;
int threshold_value = 127;
int threshold_max = 255;
int type_value = 2;
int type_max = 4;
const char* input_title = "input image";
const char* output_title = "binary image";
void Threshold_Demo(int, void*);
int main(int argc, char** argv)
{

	src = imread("test.jpg");
	if (!src.data)
	{
		printf("could not load image...");
		return -1;
	}

	namedWindow(input_title, CV_WINDOW_AUTOSIZE);
	namedWindow(output_title, CV_WINDOW_AUTOSIZE);
	imshow(input_title, src);

	createTrackbar("Threshold Value:", output_title, &threshold_value, threshold_max, Threshold_Demo);
	createTrackbar("Type Value:", output_title, &type_value, type_max, Threshold_Demo);
	Threshold_Demo(0, 0);

	waitKey(0);
	return 0;
}

void Threshold_Demo(int, void*)
{
	cvtColor(src, gray_src, CV_BGR2GRAY);

	// 单纯阈值的二值化
	// threshold(gray_src, dst, threshold_value, threshold_max, THRESH_BINARY);

	//THRESH_OTSU去找阈值的话,就会忽略预设的阈值,所以为0即可,最大值是255
	threshold(gray_src, dst, 0, 255, THRESH_OTSU | type_value);

	imshow(output_title, dst);
}

效果展示:

10- OpenCV:基本阈值操作(Threshold),OpenCV,opencv,人工智能,计算机视觉,图像阈值文章来源地址https://www.toymoban.com/news/detail-800656.html

到了这里,关于10- OpenCV:基本阈值操作(Threshold)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV-Python学习(10)—— OpenCV 图像二值化处理(cv.threshold)

    1. 学习目标 理解图像的分类,不同类型的图像的区别; 对图像进行二值化处理,对【 cv.threshold 】函数的理解。 2. 图像分类 2.1 不同类型图像说明 按照颜色对图像进行分类,可以分为二值图像、灰度图像和彩色图像。 二值图像: 只有黑色和白色两种颜色的图像。 每个像素

    2024年02月03日
    浏览(74)
  • C++OpenCV(6):图像阈值操作

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 阈值又叫临界值,是指一个效应能够产生的最低值或最高值。 例如我们选择的阈值为125,则图像中高于125像素值的会变白,而低于125像素值的会变黑。做到一副图像中利用阈值分割出我们

    2024年02月16日
    浏览(44)
  • 009 OpenCV 二值化 threshold

    本文使用环境为: Windows10 Python 3.9.17 opencv-python 4.8.0.74 在机器视觉应用中,OpenCV的二值化函数threshold具有不可忽视的作用。主要的功能是将一幅灰度图进行二值化处理,以此大幅降低图像的数据量,从而突显出目标的轮廓。 具体来说,函数threshold可以将图像上的像素根据阈值

    2024年02月05日
    浏览(49)
  • 我在Vscode学OpenCV 图像处理一(阈值处理、形态学操作【连通性,腐蚀和膨胀,开闭运算,礼帽和黑帽,内核】)

    例如,设定阈值为127,然后:  将图像内所有像素值大于 127 的像素点的值设为 255。  将图像内所有像素值小于或等于 127 的像素点的值设为 0。 cv2.threshold() 和 cv2.adaptiveThreshold() 是 OpenCV 中用于实现阈值处理的两个函数,它们之间有以下区别: 1.1.1. cv2.threshold(): 这个函数

    2024年02月05日
    浏览(60)
  • python-opencv第四期:threshold函数详解

    概要: 众 嗦粥汁 所周知,在如今计算机视觉( Computer Version  short for CV)是人工智能与机器人技术发展的一个重大研究方向,而 opencv 作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。             本期所要介绍的函数是o

    2024年02月05日
    浏览(38)
  • OpenCV基本操作——算数操作

    两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值 注意:OpenCV加法和Numpy加法之间存在差异。OpenCV的加法是饱和操作,而Numpy添加的是模运算 ((414, 500, 3), (429, 499, 3)) (429, 499, 3) 其实也是加法,只是权重不同

    2024年02月13日
    浏览(47)
  • python-opencv-cv2.threshold()二值化函数详解

    cv2.threshold( src, thresh, maxval, type[, dst] ) → retval, dst 参数 描述 src 表示的是图片源 thresh 表示的是阈值(起始值) maxval 表示的是最大值 type 表示的是这里划分的时候使用的是方法选择参数 常用值为0(cv2.THRESH_BINARY) 第四个是一个方法选择参数,常用的有: • cv2.THRESH_BINARY(黑

    2024年02月15日
    浏览(41)
  • OpenCV-opencv下载安装和基本操作

    本实验目的是学习如何使用opencv库来读取文件并显示图象,学习opencv中的基本事件——窗口事件,鼠标事件、键盘事件以及滑动条事件,同时熟悉OpenCV库的函数和方法,为进一步学习和应用计算机视觉和图像处理提供基础。 1、opencv的安装 2、opencv的基本操作 - 图像输入输出模

    2024年02月03日
    浏览(53)
  • Opencv基本操作 (上)

    目录 图像基本操作 阈值与平滑处理 图像阈值 图像平滑处理 图像形态学操作 图像梯度计算 Sobel 算子 Canny 边缘检测 图像金字塔与轮廓检测   图像轮廓 接口定义  轮廓绘制 轮廓特征与相似 模板匹配  傅里叶变换 傅里叶变换的作用 滤波 图像基本操作 读取图像: 使用cv2.i

    2024年03月18日
    浏览(44)
  • OpenCV基本操作——图像的基础操作

    注:opencv图像坐标系中,左上角是原点,y轴向下,x轴向右,单位像素点 有时需要在B,G,R通道图像上单独工作。在这种情况下,需要将BGR图像分割成单个通道。或者在其他情况下,可能需要将这些单独的通道合并到BGR图像 opencv中有150多种颜色空间转换方法。最广泛使用的转

    2024年02月13日
    浏览(97)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包