数字图像处理最主要的就是对像素进行操作,然而Opencv提供了14中像素的操作方法,但是处理速度有所不一样,常用的可以用指针进行访问,本文采用的也是用指针进行访问,其次可以采用vector容器指针的方式进行访问,处理速度上也很快! 基本上如果学会了对像素的操作就可以结合《数字图像处理》一书根据相应理论公式编写相关算法,正如学习stm32嵌入式时,首先学会 的既是对I/O口的操作;之前都是通过调用相关api函数实现的,今天刚好不想看书就想自己写点代码测试一下自己的学习的进程以及理解程度。然后就编写了一个基于两个阈值的二值化图像算法。
Code:

/**作者:att0206*地点:上海师范大学*时间:2017/03/26*功能:二值化图像的学习
*/#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>#define WINDOW_NAME1 "srcImage"
#define WINDOW_NAME2 "dstImage"
#define TrackbarValueMax 255
using namespace std;
using namespace::cv;Mat srcImage;
Mat dstImage;
int TrackbatValue = NULL;
int TrackbatValue1 = NULL;
static void showHelpText();
void showerror(Mat&);
void XS(Mat&rstImage,Mat&dstImage);
static void on_EZ(int,void* );
int main(int argc,char* argv[])
{system("color 3F");showHelpText();TrackbatValue =100;TrackbatValue1 = 150;srcImage = imread("dota.jpg");showerror(srcImage);cvtColor(srcImage,srcImage,CV_BGR2GRAY);while(1){imshow(WINDOW_NAME1,srcImage);namedWindow(WINDOW_NAME2);  //必须创建一个WINDOW_NAME2的窗口,这样Trackbar才可以依附createTrackbar("阈值:",WINDOW_NAME2,&TrackbatValue,TrackbarValueMax,on_EZ);  createTrackbar("阈值",WINDOW_NAME2,&TrackbatValue1,TrackbarValueMax,on_EZ);on_EZ(TrackbatValue1,0);on_EZ(TrackbatValue,0);//XS(srcImage,dstImage);//imshow(WINDOW_NAME2,dstImage);waitKey(11);}return NULL;
}
static void showHelpText()
{cout<<"***********************************************\n\n"<<endl;cout<<"*****           欢迎学习opencv            *****\n\n"<<endl;cout<<"***********         ******          ***********\n"<<endl;
}void showerror(Mat&srcImage)
{if(!srcImage.data)cout<<"error:请查看project下是否存在文件!"<<endl;else{cout<<"success:打开文件成功"<<endl;}
}void XS(Mat&srcImage,Mat& dstImage)   //二值化处理数据  一般前景与背景有很大的差异时比较明显
{dstImage = srcImage.clone();int row = dstImage.rows;  //行int col = dstImage.cols;  //列for(int x = 0;x<row;x++){uchar* data = dstImage.ptr<uchar>(x); //获取第x行的头指针for(int y = 0;y<col;y++){int num = (int)data[y];  //强制转换为整型数据和阈值进行比较if((num>TrackbatValue)&(num<TrackbatValue1))data[y] = 255;   //elsedata[y] = 0;//cout<<"num is :"<<num<<endl;}}
}static void on_EZ(int,void*)  //回调函数
{XS(srcImage,dstImage);imshow(WINDOW_NAME2,dstImage);
}

Output:

Opencv3.0--第二篇【双阈值二值化图像】相关推荐

  1. java 图像二值化阀值,阈值 二值化图像程序

    在Matlab中将一幅图像阈值分割二值化非常简单,若需要通过阈值th2二值化保留一些大面积的.且有灰度值含有大于th1的点的前景区域,而不需要小面积的区域(th1大于th2),这时会遇到这样的问题:当 ...

  2. [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  3. Wellner 自适应阈值二值化算法

    本篇博文来自博主Imageshop,打赏或想要查阅更多内容可以移步至Imageshop. 转载自:https://www.cnblogs.com/Imageshop/archive/2013/04/2 ...

  4. python-opencv 图像阈值二值化

    本文讲解基于OpenCV-python的图像二值化API及浅显原理讲解 文章目录 一. 阈值 1. 简单阈值 2. 自适应阈值 二. 图像二值化 1. 全局图像二值化 2. 局部图像二值化 3. Ot ...

  5. outs阈值化用来二值化图像

    从今天开始要认真学习opencv啦.研究生开学半个多学期了,突然觉得自己什么都没看,要认真学习,一点点去学opencv,把这些算法都是现一下.最近在看c++ primer,觉得比c++ primer ...

  6. OpenCV.反阈值二值化

    反阈值二值化 反阈值二值化与阈值二值化互为逆操作.在OpenCV中该类的实现依赖于threshold() 函数.下面是该函数的声明: threshold(src, dst, thresh, maxva ...

  7. AR学习笔记(七):阈值二值化优化与颜色分割的优化

    AR学习笔记(七):阈值二值化优化与颜色分割的优化 阈值二值化的优化 当前方案 图像预处理 阈值二值化 优化方案 otsu法 顶帽变换 分块阈值法 颜色分割的优化 当前方案 优化方案 HSV模型分割 ...

  8. 二值化图像的欧拉数_Android OpenCV(八):图像二值化

    图像二值化 简介 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程.在数字图像处理中,二值图像占有非常重要的 ...

  9. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

最新文章

  1. Java项目:成绩管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  2. ACM-ICPC 2018 焦作赛区网络预赛 J(二分+JAVA高精)
  3. 迁移至Android3.0遇到一些问题
  4. QT快速入门、三点求圆心实现详解
  5. 普通卷积armv7-neon指令集实现—XNNPACK
  6. 一篇文章带你吃透 hashmap(面试指南升级版)
  7. 远程协助计算机是灰色的,服务器远程协助是灰色的
  8. R语言程序员转型首选,年薪35W+,市场缺口巨大!
  9. 对GridFS数据进行分片
  10. Integer类的缓存机制
  11. Python深度学习路线
  12. 聊一聊分布式对象存储解决方案
  13. Spring定时器的配置
  14. MAC版WORD使用EndNote之后每次打开都显示域代码解决方法
  15. 【烈日炎炎战后端】Elecsticsearch(1.5万字)
  16. 从零编写一个解析器(1)—— 解析数字
  17. 惠州市城市职业学院计算机考点,2020广东乡镇惠州考区笔试考点地理位置及考场安排表...
  18. 幻塔html5,《幻塔》角色情报:完美破坏者“伊希斯”
  19. Microduino王镇山:将物联网带进课堂
  20. [CreatorCocos]自定义线条 + 物理引擎

热门文章

  1. type:ETL_QUALITY_UNSATISFIED; msg:quality not good enough to cancel
  2. 使用matlab分析一段声音信号的均方根
  3. Win11 解决 资源管理器和右键问题
  4. 关于xp系统下的IIS 500错误
  5. Unity 3D 菜单栏与快捷键
  6. 电脑+浏览器——黑色护眼
  7. Java JVM堆空间的概述
  8. python kivy kv模板调用_Python-Kivy:使用另一个类中的函数更改和保留kv文件值
  9. 【Docker镜像文件加载原理生产中重新制作并提交镜像文件案例演示】
  10. 【无标题】C语言连续输出输入语句执行跳过的问题