opencv学习笔记之二值化

1.什么是二值化
二值化,从名词意义上可以看出来,是将一共物体转化成两个值。二值即:0或255.即一个白色一个黑色。即一个图片经过二值化之后会显示成白色和黑色的形式。
2.什么时候需要二值化
我是最近有一个边缘检测的东西,才回头看二值化的问题因为当一个图片有很多的元素和噪声参杂,我们直接调用canny边缘检测是不行的,无论你怎么调阈值都不能完整的将边缘提取出来。二值化此时就是将不需要的 元素除去。
3.二值化
(1)全局二值化:
对于一个完整的图像,我们对其的全局进行二值化,范围整个图片,对其设置一个阈值,将大于阈值的都为黑,不大于阈值的则为白色
(2)局部二值化方法:
以像素的邻域的信息为基础来计算每一个像素的阈值。其中一些方法还会计算整个图像中的一个阈值面。如果图像中的一个像素(x,y)的灰度级高于在(x,y)点的阈值面的计算值,那么把像素(x,y)标记为背景,否则为前景字符。
4.实现二值化

#include "opencv2/imgproc.hpp"#include "opencv2/imgcodecs.hpp"#include "opencv2/highgui.hpp"using namespace cv;Mat src,src_gray;Mat dst, detected_edges;Mat thresholds;int edgeThresh = 1;int lowThreshold;int const max_lowThreshold = 100;int ratio = 3;int kernel_size = 3;int nThreshold = 0;const char* window_name = "Edge Map";const char* newimage ="newimage";const char* newimages ="newimages";static void CannyThreshold(int, void*){blur( src_gray, detected_edges, Size(3,3) );namedWindow(newimages, WINDOW_AUTOSIZE );imshow(newimages, detected_edges);Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );dst = Scalar::all(0);src.copyTo( dst, detected_edges);imshow( window_name, dst );}void on_trackbar(int ,void*)
{blur( src_gray, detected_edges, Size(3,3) );thresholds.creat(detected_edges.size(),detected_edges.type());threshold(detected_edges,thresholds,nThreshold,255,THRESH_BINARY);namedWindow(thresholdsimge, WINDOW_AUTOSIZE );imshow(thresholdsimge, thresholds);}int main( int, char** argv ){src = imread( argv[1], IMREAD_COLOR ); // Load an imageif( src.empty() ){ return -1; }dst.create( src.size(), src.type() );cvtColor( src, src_gray, COLOR_BGR2GRAY );namedWindow(newimage, WINDOW_AUTOSIZE );imshow(newimage, src_gray );namedWindow( window_name, WINDOW_AUTOSIZE );createTrackbar("二值图阈值", "二值图", &nThreshold, 254, on_trackbar);on_trackbar(1, 0);createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );CannyThreshold(0, 0);waitKey(0);return 0;}

上述代码是canny和二值化一起使用的代码

opencv学习笔记之二值化相关推荐

  1. OpenCV学习笔记(十二)——图像分割与提取

    在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...

  2. opencv学习笔记(二):基于肤色的人手检测

    opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...

  3. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

  4. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  5. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  6. OpenCV学习笔记(二):3种常用访问图像中像素的方式

    OpenCV学习笔记(二):3种常用访问图像中像素的方式 #include <opencv2/opencv.hpp>using namespace cv; using namespace ...

  7. OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值,平均值和标准差 (minMaxLoc()和meanStdDev()函数的使用)

    OpenCV 学习笔记 day13 像素值统计 函数 minMaxLoc(); 最大值最小值统计 meanStdDev();平均值和标准方差统计 代码 day13 像素值统计 函数 minMaxLoc ...

  8. OpenCV+python:图像二值化

    1,图像二值化概念及方法 一个像素点的颜色是由RGB三个值来表现的,所以一个像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵,它们也都是同样大小的矩阵. 在图像处理中,用RGB三个分量(R ...

  9. 用python怎么样实现图像二值化_使用Python+OpenCV如何实现图像二值化

    使用Python+OpenCV如何实现图像二值化 发布时间:2020-10-26 14:15:52 来源:亿速云 阅读:77 作者:蛋片鸡 这篇文章运用简单易懂的例子给大家介绍使用Python+Ope ...

最新文章

  1. ubuntu 安装OpenBLAS
  2. 一步一步学Remoting
  3. 据廖雪峰python3教程----python学习第十三天
  4. 55种数据可视化开源工具_4种开源工具让我的创业起步
  5. (一)区块链的共识算法:整体介绍 及 分叉 的通俗讲解
  6. nginx:工作原理
  7. 基于C语言设计的仓库管理系统(小超市)
  8. 基于SSM的企业人事管理系统(Spring+SpringMVC+Mybatis)
  9. 中国各省的简称及简称的由来
  10. 如何用 NAS 搭建属于自己的云端书库 | 极客分享第 32 期
  11. html 一键排版,用一键排版 排版好轻松
  12. 利用集成支持向量机模型评估信贷风险
  13. elementUI 日 周 月 季 年 时间选择控件封装
  14. 英语口语收集(三十七)
  15. Excel教程视频《Excel大神上分攻略》50个工作场景,从案例到实践
  16. CodeForces 1037E Trips(瞎搞)
  17. HoloLens调试
  18. RAC学习笔记(2)-DB2和Oracle体系结构
  19. 浅谈:智能化变电站在线监测系统
  20. 视觉学习笔记5——FAR Planner全局路径规划算法学习研究

热门文章

  1. 双边国家地理距离、制度距离和文化距离
  2. Spring源码编译测试
  3. csgo调哪个会流畅_对于游戏卡顿掉帧说不,三步提高游戏流畅性,让你纵享丝滑画面...
  4. 在手机上用cdsn写博客
  5. 干就行!大牛给初学者推荐的10个Python经典案例
  6. KEIL C51文件管理,工程创建
  7. 原来JAVA对象转JSON格式的字符串如此简单,返回来暂时不会做,留下纪念下
  8. matlab仿真高阶传递函数,Matlab/Simulink动力学系统建模与仿真(第2版)
  9. 压缩感知之常用稀疏恢复算法(凸优化算法)及matlab代码
  10. 亚马逊关键词首页排名技巧 让客户找到你