文章目录

  • 1 OpenCV中阈值化的5种形式
  • 2 代码实现(C++)

1 OpenCV中阈值化的5种形式

/*
src--源图像,
dst--输出图像,
threshold--阈值,
max_value--最大值,
threshold_type--5种阈值化形式
*/
CVAPI(double)  cvThreshold( const CvArr*  src, CvArr*  dst,double  threshold, double  max_value,int threshold_type );

阈值化的图像必须是单通道的,需要先用cvSplit()cvAddWeighted()

测试用图:

2 代码实现(C++)

#include <highgui.h>
#include<cv.h>
#include <opencv2/legacy/legacy.hpp>
using namespace std;int t,Threshold,Max_value;IplImage *img_in = cvLoadImage("test.jpg");
IplImage *img_blue = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_green = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_red = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_all = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_out = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_control = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);void on_trackbar_1(int Threshold_pos)
{Threshold=Threshold_pos;cvSplit(img_in,img_blue,img_green,img_red,NULL);cvAddWeighted(img_blue,1.0/3,img_green,1.0/3,0.0,img_all);cvAddWeighted(img_all,2.0/3,img_red,1.0/3,0.0,img_all);cvThreshold(img_all,img_out,Threshold,Max_value,CV_THRESH_BINARY);cvThreshold(img_all,img_out,Threshold,Max_value,CV_THRESH_TRUNC);cvNamedWindow("img_out",CV_WINDOW_AUTOSIZE);cvShowImage("img_out",img_out);
}void on_trackbar_2(int Max_value_pos)
{Max_value=Max_value_pos;cvSplit(img_in,img_blue,img_green,img_red,NULL);cvAddWeighted(img_blue,1.0/3,img_green,1.0/3,0.0,img_all);cvAddWeighted(img_all,2.0/3,img_red,1.0/3,0.0,img_all);cvThreshold(img_all,img_out,Threshold,Max_value,CV_THRESH_BINARY);cvNamedWindow("img_out",CV_WINDOW_AUTOSIZE);cvShowImage("img_out",img_out);
}int main()
{cvNamedWindow("img_in",CV_WINDOW_AUTOSIZE);cvShowImage("img_in",img_in);cvSplit(img_in,img_blue,img_green,img_red,NULL);cvAddWeighted(img_blue,1.0/3,img_green,1.0/3,0.0,img_all);cvAddWeighted(img_all,2.0/3,img_red,1.0/3,0.0,img_all);cvNamedWindow("img_all",CV_WINDOW_AUTOSIZE);cvShowImage("img_all",img_all);cvNamedWindow("img_control",CV_WINDOW_AUTOSIZE);cvCreateTrackbar("Threshold","img_control",&t,255,on_trackbar_1);cvCreateTrackbar("Max_value","img_control",&t,255,on_trackbar_2);cvNamedWindow("img_out",CV_WINDOW_AUTOSIZE);cvWaitKey(0);cvDestroyAllWindows();cvReleaseImage(&img_in);cvReleaseImage(&img_blue);cvReleaseImage(&img_green);cvReleaseImage(&img_red);cvReleaseImage(&img_all);cvReleaseImage(&img_out);cvReleaseImage(&img_control);return 0;
}

运行结果:

截断模式:

二值化模式:


以上内容来自:

  1. 小狗爱晴天_cvThreshold() 阈值化【CSDN】

OpenCV--cvThreshold() 阈值化【转载】相关推荐

  1. OpenCV自适应阈值化函数adaptiveThreshold详解,并附实例源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 2016-6-14日:又发现一种阈值分割法,最大 ...

  2. OpenCV之阈值化操作总结

    参考:https://blog.csdn.net/sinat_21258931/article/details/61418681 在做图像处理时,阈值化(二值化)是一个非常常见的操作,其中最关键的是阈 ...

  3. 毛星云opencv之阈值化函数threshold--摘抄

     

  4. 关于阈值化函数cvThreshold()

    所谓阈值,其基本的思想是:给定一个数组和一个阈值,然后根据数组中每个元素的值是低于还是高于阈值而进行的一些处理. 函数原型: void cvThreshold( const CvArr* src, C ...

  5. opencv 腐蚀 matlab,Opencv3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换...

    19      腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形 ...

  6. OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()

    OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold() 一.定义: 1)固定阈值操作 double threshold( InputArray src, ...

  7. OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu

    阈值化函数: double cvThreshold(constCvArr* src, CvArr* dst, double threshold, double max_value,int thresh ...

  8. OpenCV图像处理(十二)---图像阈值化

    如果两个热力学系统中的每一个都与第三个热力学系统处于热平衡(温度相同),则它们彼此也必定处于热平衡.这一结论称做"热力学第零定律".又称热平衡定律,是热力学的四条基本定律之一,是一 ...

  9. 图像的OTSU阈值化、双阈值化、半阈值化的原理及OpenCV代码实现

    本文的基础是OpenCV的函数threshold(),关于函数threshold()的详细介绍,大家可以参考下面这篇博文: https://www.hhai.cc/thread-162-1-1.htm ...

最新文章

  1. Docker使用场景一
  2. 请简单叙述微型计算机的诞生,2012湖南省计算机等级考试试题 二级C试题考资料...
  3. Linux内核实现多路镜像流量聚合和复制
  4. 基于vue-cli3+typescript+element-ui搭建起来的后端管理平台框架(骨架)
  5. presto自定义UDF函数
  6. JAVA网站后台管理系统
  7. 计算机专用英语词汇1695个词汇表(传)
  8. 银河麒麟系统10服务器安装教程,麒麟系统下安装win10的详细教程
  9. 51单片机dds信号发生器 扫频 c语言,基于DDS正弦信号发生器设计.doc
  10. 鸡汤_产品经理职责概要
  11. 拍牌服务器提交中断,沪牌拍牌的经验总结
  12. EVE-NG 上传IOL镜像
  13. 一台电脑借助另一台电脑实现上网
  14. 【征集反馈】工作中让你印象最深刻、最想吐槽的一件事是什么?
  15. 计算机病毒可通过光盘传播吗,光盘能传播病毒吗
  16. 亚马逊风控规则,亚马逊测评如何避免风控
  17. 重温经典 15年IE浏览器大盘点
  18. nohup怎么更改名字_公司相关信息可以变更吗?公司注销怎么处理?
  19. 思考(八十五):IM 服务设计思路
  20. 使用Hexo免费搭建个人博客教程

热门文章

  1. Nginx 极简入门教程
  2. 容器编排技术 -- Kubernetes Annotations
  3. BGP——双AS配置
  4. C语言,利用函数调用统计输出素数并统计素数和
  5. 不要再写这样的神级代码了!
  6. java 课后习题 删除奇数元素下标 然后再删除值为奇数的下标
  7. 【Python】编写一个类,求圆的周长和面积
  8. Java浅克隆和深克隆
  9. init,service和systemctl的区别
  10. react 组件引用组件_自定位React组件