opencv学习笔记(十四)阈值操作

1.阈值概念

阈值即界限,在图像学中,它把图像进行分割,凸显出想要的区域。常用于图像二值化。

2.常见操作

(1)阈值二值化-threshold binary

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

(3)截断-truncate

(4)阈值取0-threshold to zero

(5)阈值反取0-threshold to zero Inverted

3.阈值API介绍

double cv::threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)

参数1:输入图像

参数2:输出图像

参数3:定义阈值

参数4:代替的最大值

参数5:操作类型(是int类型,对应的数字和类型如下)

参数5有如下选择:

4.代码实现

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;

char inputName[] = "input name";
char outputName[] = "output name";
int thresholdValue = 127;
int thresholdMax = 255;
int typeValue = 2;
int typeMax=6;
void ThresholdDemo(int, void*);
Mat src, dst,graySrc;
int main()
{
	src = imread("D:/demo.jpg");
	if (src.empty())
	{
		cout << "找不到图像!" << endl;
		return -1;
	}
	namedWindow(inputName, CV_WINDOW_AUTOSIZE);
	namedWindow(outputName, CV_WINDOW_AUTOSIZE);
	imshow(inputName, src);

	createTrackbar("Threshold value", outputName, &thresholdValue, thresholdMax, ThresholdDemo);//控制阈值大小
	createTrackbar("Type value", outputName, &typeValue, typeMax, ThresholdDemo);//控制阈值类型(1到4不同)
	ThresholdDemo(0, 0);
	
	waitKey(0);
	return 0;
	
}

void ThresholdDemo(int, void*)
{
	cvtColor(src, graySrc, COLOR_BGR2GRAY);
	threshold(graySrc, dst, thresholdValue, thresholdMax, typeValue);//使用threshold API
	imshow(outputName, dst);
}

使用了2个Trackbar,一个控制阈值大小,一个控制阈值操作类型。

5.运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值