利用OpenCV实现局部动态阈值分割

 更新时间:2018年01月09日 16:46:04   作者:NUAA_CV  
这篇文章主要为大家详细介绍了利用OpenCV实现局部动态阈值分割,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

利用OpenCV实现局部动态阈值分割,参考Halcon dyn_threshold算子的思路实现。

#include "dialog.h"
#include <QApplication>
#include "cv.h"
#include "highgui.h"
#include <QDebug>


int main(int argc, char *argv[])
{
  IplImage *img = cvLoadImage("D:/cs/1227/f9.bmp",0);
  IplImage *out = cvCreateImage(cvGetSize(img),img->depth,1);
  cvSmooth(img,out,CV_BLUR,50);
  IplImage *res = cvCreateImage(cvGetSize(img),img->depth,1);
  qDebug()<<img->nChannels;
  double a = 0;
  double b = 0;
  for(int i=0;i<img->height;i++){
    for(int j=0;j<img->width;j++){
      CvScalar color = cvGet2D(img,i,j);
      CvScalar color1 = cvGet2D(out,i,j);
      a = color.val[0];
      b = color1.val[0];
      //a = exp(a);
      CvScalar c = cvScalar(b-a+128);
      cvSet2D(res,i,j,c);
    }
  }
  cvThreshold(res,res,150,255,CV_THRESH_BINARY_INV);
  cvNamedWindow("Image",0);
  cvShowImage("Image",res);
  cvSaveImage("D:/cs/cs.bmp",out);
  cvWaitKey(0);
  cvReleaseImage(&img);
  cvDestroyWindow("Image");
  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++实现简单信息管理系统

    C++实现简单信息管理系统

    这篇文章主要为大家详细介绍了C++实现简单信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++实现中缀表达式转后缀表达式

    C++实现中缀表达式转后缀表达式

    这篇文章主要为大家详细介绍了C++实现中缀表达式转后缀表达式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C语言对组文件处理的相关函数小结

    C语言对组文件处理的相关函数小结

    这篇文章主要介绍了C语言对组文件处理的相关函数小结,包括setgrent()函数和getgrent()函数以及endgrent()函数,需要的朋友可以参考下
    2015-08-08
  • C语言一个函数如何实现好几个return返回值

    C语言一个函数如何实现好几个return返回值

    本文主要介绍了C语言一个函数如何实现好几个return返回值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Linux环境下段错误的产生原因及调试方法小结

    Linux环境下段错误的产生原因及调试方法小结

    借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决
    2011-11-11
  • C++中类型推断(auto和decltype)的使用

    C++中类型推断(auto和decltype)的使用

    在C++11之前,每个数据类型都需要在编译时显示声明,在运行时限制表达式的值,但在C++的新版本之后,引入了 auto 和 decltype等关键字,本文就来介绍一下C++中类型推断(auto和decltype)的使用,感兴趣的可以了解一下
    2023-12-12
  • 一步步从底层入手搞定C++引用与内联函数

    一步步从底层入手搞定C++引用与内联函数

    内联函数是代码插入到调用者代码处的函数,内联函数通过避免被调用的开销来提高执行效率,下面这篇文章主要给大家介绍了关于如何从底层入手搞定C++引用与内联函数的相关资料,需要的朋友可以参考下
    2023-03-03
  • c++中new和delete操作符用法

    c++中new和delete操作符用法

    c++中new和delete运算符是用于动态分配和撤销内存的运算符,下面是示例,大家参考使用吧
    2014-04-04
  • C++实现图的邻接表存储和广度优先遍历实例分析

    C++实现图的邻接表存储和广度优先遍历实例分析

    这篇文章主要介绍了C++实现图的邻接表存储和广度优先遍历,实例分析了C++实现图的存储与遍历技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Qt6.0 qproperty-*不生效原因解决分析

    Qt6.0 qproperty-*不生效原因解决分析

    这篇文章主要为大家介绍了Qt6.0 qproperty-*不生效原因解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08

最新评论