opencv学习(二十九)之灰度图转化为二值图adaptiveThreshold
来源:互联网 发布:js刷新form表单 编辑:程序博客网 时间:2024/06/06 09:20
针对图像的阈值操作,opencv除了提供threshold函数也提供了adaptiveThreshold()函数,从字面意思可以翻译为自适应阈值操作,函数的主要功能是将灰度图转化为二值图像。其函数原型如下:
void cv::adaptiveThreshold ( InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C )
参数解释:
. InputArray src: 输入图像,8位单通道图像
. OutputArray dst: 目标图像,与输入图像有相同的尺寸和类型
. double maxValue: 给像素赋予的满足阈值类型的非零值
. int adaptiveMethod: 用于指定自适应阈值的算法,具体可以查看adaptiveThresholdTypes给出的具体内容,简要内容如下:
其中ADAPTIVE_THRESH_MEAN_C方法的阈值时由blockSize确定的像素(x, y)在blockSize x blockSize范围内的邻域像素值减参数C得到的平均值,而ADAPTIVE_THRESH_GAUSSIAN_C中阈值是blockSize x blockSize领域范围内减去C后的加权和。默认的sigma用于指定的blockSize,可通过getGaussianKernel查看详细信息。
. int thresholdType: 阈值类型,其取值有两种类型分别是:
(1).THRESH_BINARY,其数学模型公式如下所示:
(2).THRESH_BINARY_INV,其数学公式如下:
. int blockSize: 用于计算阈值大小的像素邻域尺寸,取值为3\5\7……
. double C: 自适应阈值算法中减去的常数值,通常是正数,在极少情况下式0或负值。
示例程序:
#include <iostream>#include <opencv2/core.hpp>#include <opencv2/highgui.hpp>#include <opencv2/imgproc.hpp>using namespace std;using namespace cv;//定义全局变量Mat srcImage, grayImage, dstImage;const int thresholdTypeMaxValue = 1;int thresholdTypeValue = 0;const int CMaxValue = 50;int CValue = 10;const double maxValue = 255;int blockSize = 5;//定义回调函数void adaptiveThresholdFun(int, void*);int main(){ Mat srcImage = imread("lena.jpg"); //判断图像是否读取成功 if(srcImage.empty()) { cout << "图像读取失败!" << endl; return -1; } else cout << "图像读取成功!" << endl << endl; cvtColor(srcImage, grayImage, COLOR_RGB2GRAY); namedWindow("灰度图",WINDOW_AUTOSIZE); imshow("灰度图", grayImage); //轨迹条属性和依附窗口设置 namedWindow("二值图像", WINDOW_AUTOSIZE); char thresholdTypeName[20]; sprintf(thresholdTypeName, "阈值类型\n 0: THRESH_BINARY\n 1: THRESH_BINARY_INV ", thresholdTypeMaxValue); createTrackbar(thresholdTypeName, "二值图像", &thresholdTypeValue, thresholdTypeMaxValue, adaptiveThresholdFun); adaptiveThresholdFun(thresholdTypeValue, 0); char CName[20]; sprintf(CName, "常 数 %d", CMaxValue); createTrackbar(CName, "二值图像", &CValue, CMaxValue, adaptiveThresholdFun); adaptiveThresholdFun(CValue, 0); waitKey(0); return 0;}void adaptiveThresholdFun(int, void*){ int thresholdType; switch(thresholdTypeValue) { case 0: thresholdType = THRESH_BINARY; break; case 1: thresholdType = THRESH_BINARY_INV; break; default: break; } adaptiveThreshold(grayImage, dstImage, maxValue, ADAPTIVE_THRESH_MEAN_C, thresholdType, blockSize, CValue); imshow("二值图像", dstImage);}
程序运行结果:
- opencv学习(二十九)之灰度图转化为二值图adaptiveThreshold
- 【opencv学习之二十二】Threshold阈值分割进阶adaptiveThreshold
- OpenCV简单例子之彩图转化为灰度图
- OpenCV将彩色图像转化为灰度图代码
- opencv将灰度图转化为RGB三通道图像
- OpenCV-将图像转化为灰度图,然后边缘检测
- 利用OpenCV和C++实现由RGB图像转化为灰度图,再将灰度图转化为二值图的程序
- OPENCV的学习:AdaptiveThreshold函数
- OpenCV :: adaptiveThreshold()
- OpenCV-将图像两次缩放+转化为灰度图+边缘检测
- 六.使用OpenCv将图像转化为灰度图像
- 使用OpenCv将图像转化为灰度图像
- python使用opencv将灰度图人脸图片转化为RGB
- opencv之Threshold()与AdaptiveThreshold()函数
- python彩色图转化为灰度图
- 24位位图转化为灰度图
- vc++ 位图转化为 灰度图
- 把图片转化为灰度图
- sqlite模糊查询与分页
- ueditor简单尝试
- Faster R-CNN学习笔记
- 外观模式(结构型)
- Unity优化大全(三)之CPU-Physics
- opencv学习(二十九)之灰度图转化为二值图adaptiveThreshold
- 百度地图 右键事件,右键标线,获取线编辑的点数据
- 当Linux内存耗尽时
- Windows server 2008 R2 登录密码恢复
- Unity优化大全(四)之CPU-GC(内存回收)和Sricpt
- Shape 样式
- 众数插值法
- 第八章动作和动画-动画
- CSS外部引用方式