Opencv-(29)自适应阈值

7 篇文章 0 订阅
7 篇文章 0 订阅

对于某些光照不均的图像,这种全局阈值分割的方法的效果明显是不是很好

自适应阈值

自适应阈值法(adaptiveThreshold),它的思想不是计算全局图像的阈值,而是根据图像不同区域亮度分布,计算其局部阈值,所以对于图像不同区域,能够自适应计算不同的阈值,因此被称为自适应阈值法。

  • 全局阈值的局限性,对光照度不均匀的图像容易错误的二值化分割
  • 自适应阈值对图像模糊求差值然后二值化
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
   Mat src = imread("D:/ps/jisoo.png");
   if (src.empty())
   {
   	cout << "could not find the image";
   	return -1;
   }
   namedWindow("input", WINDOW_FREERATIO);
   imshow("input", src);

   //阈值计算算法很多,基本分为两类, 全局阈值与自适应阈值
   Mat gray, binary;
   cvtColor(src, gray, COLOR_BGR2GRAY);
   imshow("gray", gray);
   Scalar m = mean(gray);//就均值
   cout << "mean :" << m[0];
   threshold(gray, binary, m[0], 255, THRESH_BINARY);
   imshow("binary1", binary);
   //OTSU阈值分割 一般优先选这个
   double t1=threshold(gray, binary, m[0], 255, THRESH_BINARY|THRESH_OTSU);
   imshow("binary2", binary);
   //三角法
   double t2 = threshold(gray, binary, m[0], 255, THRESH_BINARY|THRESH_TRIANGLE);
   imshow("binary3", binary);
   cout << t1 << endl;
   cout << t2 << endl;
   waitKey(0);
   destroyAllWindows();
   return 0;
}

自适应阈值方法所得图像在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值