利用OpenCV的函数threshold()实现双阈值二值化操作的C++代码

关于函数threshold()的说明,大家可参看我的另一篇博文,链接如下:

https://www.hhai.cc/thread-162-1-1.html

借助双阈值二值化操作可以对图像进行区间二值化,即位于某个区间范围像素值置为某个值,而不在这个区间范围内的像素值置为0。

下面直接上利用OpenCV的函数threshold()实现双阈值二值化操作的源码,很简单,一看就懂。

源码如下:

源码中用到的图像的下载链接为:https://pan.baidu.com/s/1dFhVUpF

图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

//OpenCV版本2.4.9  
//VS版本:VS2012
//博主微信/QQ 2487872782
//有问题可以联系博主交流
//有图像处理需求也可联系博主
//图像处理技术交流QQ群 271891601

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
int main( )
{
  // 图像读取及判断
  cv::Mat srcImage = cv::imread("hand1.jpg");
  if( !srcImage.data ) 
      return 1;
  // 灰度转换
  cv::Mat srcGray;
  cv::cvtColor(srcImage, srcGray, CV_RGB2GRAY);
  cv::imshow("srcGray", srcGray);
  // 初始化阈值参数
  const int maxVal = 255;
  int low_threshold  = 150;
  int high_threshold = 210;
  cv::Mat dstTempImage1, dstTempImage2, dstImage;
  // 小阈值对源灰度图像进行阈值化操作
  cv::threshold( srcGray, dstTempImage1, 
       low_threshold, maxVal, cv::THRESH_BINARY );
  // 大阈值对源灰度图像进行阈值化操作
  cv::threshold( srcGray, dstTempImage2, 
       high_threshold, maxVal,cv::THRESH_BINARY_INV );
  // 矩阵与运算得到二值化结果
  cv::bitwise_and( dstTempImage1, 
      dstTempImage2, dstImage );
  cv::imshow("dstImage", dstImage);
  cv::waitKey(0);
  return 0;
} 

运行结果如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值