OpenCV使用全局阈值和自适应阈值

全 局 阈 值 和 自 适 应 阈 值 全局阈值和自适应阈值

1.视频教程:
B站、网易云课堂、腾讯课堂
2.代码地址:
Gitee
Github
3.存储地址:
Google云
百度云:
提取码:

1.全局阈值

1 均值法
2 OTSU
3 三角法

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {

	Mat src = imread("E:/cats.jpg", IMREAD_UNCHANGED);

	if (src.empty()) {
		printf("image is empty!!!");
		return -1;
	}
	namedWindow("image", WINDOW_FREERATIO);
	imshow("image", src);
	Mat gray, binary;
	cvtColor(src, gray, COLOR_BGR2GRAY);
	imshow("gray", gray);

	// 1.均值法
	Scalar m = mean(gray);
	printf("means:%0.2f\n", m[0]);
	threshold(gray, binary, m[0], 255, THRESH_BINARY);
	imshow("mean", binary);
	// 2.OTSU
	double t1 = threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
	printf("ostu:%0.2f\n", t1);
	imshow("THRESH_OTSU", binary);
	// 3.三角法
	double t2 = threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_TRIANGLE);
	printf("triangle:%0.2f\n", t2);
	imshow("THRESH_TRIANGLE", binary);

	waitKey(0);
	destroyAllWindows();
	return 0;
}


在这里插入图片描述

2.自适应阈值

全局阈值的局限性,对光照度不均匀的图像容易错误的二值化分割
在这里插入图片描述

自适应阈值对图像模糊求差值,然后二值化

  1. 盒子模糊图像 - D
  2. 原图 + 加上偏置常量C得 - S
  3. T = S - D + 255

在这里插入图片描述
分割的好坏取决于模糊窗口block大小和常量C

基于高斯_C

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;


int main(int argc, char** argv) {

	Mat src = imread("E:/cats.jpg", IMREAD_COLOR);

	if (src.empty()) {
		printf("image is empty!!!");
		return -1;
	}
	namedWindow("src", WINDOW_AUTOSIZE);
	imshow("src", src);
	
	Mat gray, binary;
	cvtColor(src, gray, COLOR_BGR2GRAY);

	// 自适应阈值分割
	adaptiveThreshold(gray, binary, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 25, 10);
	imshow("ada-binary", binary);

	waitKey(0);
	destroyAllWindows();
	return 0;
}

在这里插入图片描述

基于中值_C

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;


int main(int argc, char** argv) {

	Mat src = imread("E:/cats.jpg", IMREAD_COLOR);

	if (src.empty()) {
		printf("image is empty!!!");
		return -1;
	}
	namedWindow("src", WINDOW_AUTOSIZE);
	imshow("src", src);
	
	Mat gray, binary;
	cvtColor(src, gray, COLOR_BGR2GRAY);

	// 自适应阈值分割
	adaptiveThreshold(gray, binary, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 25, 10);
	imshow("ada-binary", binary);

	waitKey(0);
	destroyAllWindows();
	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值