Opencv 之阈值处理操作

图像的二值化:将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

API函数
CV_EXPORTS_W double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );
含义:
src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(一般取灰度图处理)
dst:输出图像
thresh:阈值
maxval:dst图像中最大值
type:阈值类型,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源程序
#include “stdafx.h”

//本节讲述 图像处理之 图像金字塔-上采样和下采样;
#include <opencv2/opencv.hpp>
#include
#include <math.h>

using namespace std;
using namespace cv;

Mat src, dst, asd,gray_src;
int threshold_value = 127;
int threshold_max = 255;
int type_value = 2;
int type_max = 4; //通过滑动切换阈值类型,5种

//const char*
void shreshold_demo(int,void*);
const char*output_title = “阈值操作”;

int main(int argc, char**argv)
{
src = imread(“C:/Users/Rubison.DELL/Desktop\杂物/壁纸/小白2.jpg”); //存放自己图像的路径
if (!src.data)
{
printf(“could not load image…\r\n”);
return -1;
}

char input_title[] = "原图";
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, shreshold_demo);
createTrackbar("type value", output_title, &type_value, type_max, shreshold_demo);
shreshold_demo(0,0);

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

}

void shreshold_demo(int, void*)
{
cvtColor(src, gray_src, CV_BGR2GRAY);
threshold(gray_src, dst, threshold_value, threshold_max, type_value); //注意 !这里type_value本应该是阈值类型,
imshow(output_title, dst); //由于它的类型对应0到4,既被赋值,可以通过改变变量type_value的值从而改变阈值类型

}

程序验证
在这里插入图片描述
补充 (该部分均为转载,出处位于首段)
自适应阈值化(THRESH_OTSU)和三角形算法(THRESH_TRIANGLE)算法

自适应阈值:转载出处
OTSU算法(大津法)是一种图像灰度自适应的阈值分割算法。大津法按照图像上灰度值的分布,将图像分成背景和前景两部分看待,前景就是我们要按照阈值分割出来的部分。背景和前景的分界值就是我们要求出的阈值。遍历不同的阈值,计算不同阈值下对应的背景和前景之间的类内方差,当类内方差取得极大值时,此时对应的阈值就是OTSU算法(大津法)所求的阈值。

Otsu实现思路

  1. 计算0~255各灰阶对应的像素个数,保存至一个数组中,该数组下标是灰度值,保存内容是当前灰度值对应像素数
  2. 计算背景图像的平均灰度、背景图像像素数所占比例
  3. 计算前景图像的平均灰度、前景图像像素数所占比例
  4. 遍历0~255各灰阶,计算并寻找类间方差极大值

三角法图像二值化:三角法阈值分割–转载
5.阈值分固定阈值自适应阈值(adaptiveThreshold()):上面讲述的是固定阈值,有关自适应阈值请参考:自适应阈值
备注:threshold(src, dst, 150, 255, THRESH_BINARY|THRESH_OTSU)也是自适应阈值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w5875895

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值