利用OpenCV的threshold函数实现双阈值法二值化操作的源码!

直接上源码吧,很简单,一看就懂,如果你不明白,可以举两个灰度值实际代入进行理解!

源码如下:

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

图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!

//OpenCV版本2.4.9  
//Author:opencv66.net

#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 );//要特别注意这里的最后一个参数是INV哦
  // 矩阵与运算得到二值化结果
  cv::bitwise_and( dstTempImage1, 
      dstTempImage2, dstImage );
  cv::imshow("dstImage", dstImage);
  cv::waitKey(0);
  return 0;
} 

 

运行结果如下图所示:

利用OpenCV的threshold函数实现双阈值法二值化操作的源码!_第1张图片

 

你可能感兴趣的:(利用OpenCV的threshold函数实现双阈值法二值化操作的源码!)