OpenCV中阈值操作
阈值分割,顾名思义,就是对图像的像素点和选中的阈值进行比对的图像分割方法,在OpenCV 2.X中,Threshold()函数(基本阈值操作)和adaptiveThreshold()函数(自适应阈值操作)可以完成图像阈值分割的目的。基本思想是:给定一个数组和一个阈值,根据数组中的每个元素值是高于还是低于阈值而进行一些处理。
1.固定阈值操作:Threshold()函数
// threshold.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace std;
using namespace cv;#define WINDOW_NAME "[程序窗口]" //为窗口标题定义的宏int g_nThresholdValue = 100;
int g_nThresholdType = 3;
Mat srcImage,grayImage,dstImage;//全局函数声明
void on_Threshold(int,void*);//回调函数int _tmain(int argc, _TCHAR* argv[])
{srcImage = imread("1.jpg");if(!srcImage.data){printf("图片读取失败!\n");return false;}imshow("[源图像]",srcImage);//保留一份原图的灰度图cvtColor(srcImage,grayImage,COLOR_RGB2GRAY);//创建窗口并显示原始图namedWindow(WINDOW_NAME,WINDOW_AUTOSIZE);//创建滑动条来控制阈值createTrackbar("模式",WINDOW_NAME,&g_nThresholdType,4,on_Threshold);createTrackbar("参数值",WINDOW_NAME,&g_nThresholdValue,255,on_Threshold);//初始化自定义的阈值回调函数on_Threshold(0,0);waitKey();return 0;
}void on_Threshold(int,void*)
{//调用阈值函数threshold(grayImage,dstImage,g_nThresholdValue,255,g_nThresholdType);//更新效果图imshow(WINDOW_NAME,dstImage);
}
效果图:
- 对于 ADAPTIVE_THRESH_MEAN_C 的方法,阈值T(x,y) 为blockSize * blockSize 邻域内(x,y) 减去第七个参数 C 的平均值
- 对于 ADAPTIVE_THRESH_GAUSSIAN_C 的方法,阈值T(x,y) 为blockSize * blockSize 邻域内(x,y) 减去第七个参数 C 与高斯窗交叉相关的加权总和。
#include "stdafx.h"
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace std;
using namespace cv;
int main(int argc, char** argv)
{Mat image = imread("1.jpg");Mat grayImage;cvtColor(image,grayImage,COLOR_RGB2GRAY);if (image.empty()){cout << "read image failure" << endl;return -1;}// 局部二值化int blockSize = 7;int constValue = 11;Mat local;adaptiveThreshold(grayImage, local, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, blockSize, constValue);imshow("[源图像]", image);imshow("localThreshold", local);waitKey(0);return 0;
}
OpenCV中阈值操作相关推荐
- OpenCV 基本阈值操作Thresholding Operations
OpenCV 基本阈值操作Thresholding Operations 基本阈值操作Thresholding Operations 目标 门槛? 阈值类型 阈值二进制 阈值二进制,反转 截短 阈值为 ...
- OpenCV中视频操作及人脸识别案例
目录 OpenCV中视频操作及人脸识别案例 视频操作 视频读写 从文件中读取视频并播放 保存视频 小结 视频追踪 meanshift Camshift 算法总结 小结 案例:人脸案例 人脸识别基础 实 ...
- 【OpenCv】阈值操作(超详细)
一.阈值化操作 1.阈值滑动条: createTrackbar使用方法及步骤 第一个参数:conststring& trackbarname,表示轨迹条的名字 第二个参数:conststrin ...
- opencv中直方图操作
直方图 1 灰度直方图 1.1 原理 直方图是对数据进行统计的一种方法,并且将统计值组织到一系列实现定义好的 bin 当中.其中, bin为直方图中经常用到的一个概念,可以译为"直条&quo ...
- OpenCV 基本阈值操作
文章目录 图像阈值 阈值是什么? 阈值类型 阈值二值化(threshold binary) 阈值反二值化(threshold binary Inverted) 截断 (truncate) 阈值取零 ( ...
- 三天学会opencv(十三)——阈值操作
基本阈值操作 主要内容 图像阈值 阈值类型 图像阈值(threshold) 阈值类型一阈值二值化(threshold binary) 图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值 我 ...
- OpenCV中图像形态学操作
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 图像形态学是图像处理的分支学科,在二值图像处理 ...
- OpenCV中感兴趣区域的选取与检测(一)
1.感兴趣区域的选取 感兴趣区域(Region of Interest, ROI)的选取,一般有两种情形:1)已知ROI在图像中的位置:2)ROI在图像中的位置未知. 1)第一种情形 很简单,根据RO ...
- Python OpenCV 图片模糊操作 blur 与 medianBlur
Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. Python OpenCV 基础知识铺垫 函数原型介绍 均值模糊 中值模糊 2D 卷积(图像滤波),自定义模糊 橡皮擦的小 ...
最新文章
- 九、中缀表达式转为后缀表达式
- SBO应用技术一则-格式化
- vc2005编译ffmpeg以及ffplay
- UITabBarController 笔记(三) UITabBarController 配合 UINavigationController 的使用
- gophp解释器_对比平台--Go和PHP之间的区别
- plesk 打不开php,Laravel在Plesk背后,遇到PHP版本困难
- C#通过Redis实现分布式锁
- matlab vs2010编译器xml,如何在MATLAB R2010a 中使用Visual C++ 2010编译器
- idea社区版下载lombok或是导入lombok.jar包
- 请解释python面向对象中的继承
- 求一个二维数组的最大子矩阵的和
- JavaScript(第七天)【对象和数组】
- named-config with name ‘c3p0-config.xml‘ does not exist. Using default-config
- 这三款曾红极一时的软件,现已风光不再,而遭嫌弃的它成了香饽饽
- 视频修复工具修复损坏avi视频文件
- 产品更新|用于语音压缩的新型极低比特率编解码器,Lyra 长什么样?
- Groovy - Groovy ambiguous method overload
- Codeforces Problem-69A Young Physicist
- 【VUE+Elemet 】最全正则验证 + 表单验证 + 注意事项
- 如何让电脑的多个蓝牙音响同时输出声音