opencv提取轮廓大于某个阈值的图像

 更新时间:2020年03月21日 11:46:58   作者:既然如此  
这篇文章主要为大家详细介绍了opencv提取轮廓大于某个阈值的图像,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了opencv提取轮廓大于某个阈值的图像,供大家参考,具体内容如下

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
#include"core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
 
 
#include <iostream>
 
 
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
 
const char* inputImage = "d:/3.jpg"; 
 Mat img; 
 int threshval =100; 
 img = imread(inputImage,0); 
 if (img.empty()) 
 { 
 cout << "Could not read input image file: " << inputImage << endl; 
 return -1; 
 } 
  
 img = img >110; 
 namedWindow("Img", 1); 
 imshow("Img", img); 
 vector<vector<Point> > contours; 
 vector<Vec4i>hierarchy; 
 
 vector<Point> contour;
 Mat dst = Mat::zeros(img.rows, img.cols, CV_8UC3); 
 findContours(img, contours,hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); 
 
 int m=contours.size();//得到轮廓的数量
 int n=0;
 for (int i =0;i<m;++i)
 {
 n=contours[i].size();
 for (int j =0;j<n;++j)
 {
  contour.push_back(contours[i][j]);//读取每个轮廓的点
 }
 double area = contourArea(contour); //取得轮廓面积
 
 if (area>10)//只画出轮廓大于10的点
 {
 Scalar color( (rand()&255), (rand()&255), (rand()&255) ); 
 
  drawContours( dst, contours, i, color, 1, 8, hierarchy ); 
 }
 contour.clear();
 
 }
 
 namedWindow("src", 1); 
 imshow( "src", dst ); 
 
  waitKey();
  return 0;
}

左边为二值化的图像

右边为提取面积大于10的轮廓的图像

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

相关文章

  • C++代码实现网络Ping功能

    C++代码实现网络Ping功能

    这篇文章主要介绍了C++代码实现网络Ping功能,Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机,本文给大家介绍的非常详细,需要的朋友参考下吧
    2021-08-08
  • C语言如何改变字体颜色

    C语言如何改变字体颜色

    这篇文章主要介绍了C语言如何改变字体颜色,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • C语言基于EasyX实现贪吃蛇

    C语言基于EasyX实现贪吃蛇

    这篇文章主要为大家详细介绍了C语言基于EasyX实现贪吃蛇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • c++回调之利用sink示例

    c++回调之利用sink示例

    Sink的本质是利用C++的封装、继承、多态的面向对象来实现,从实现角度来说,更优于函数指针回调,下面是示例
    2014-04-04
  • C语言实现消消乐游戏的代码分享

    C语言实现消消乐游戏的代码分享

    本章我们将编写十字消除游戏,用户点击空白方块,沿其上下左右方向寻找第一个彩色方块,如果有两个或两个以上颜色一致,就将其消除,感兴趣的可以了解一下
    2023-02-02
  • OpenCV实现图像膨胀

    OpenCV实现图像膨胀

    这篇文章主要为大家详细介绍了OpenCV实现图像膨胀,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • OpenCV 图像金字塔的实现示例

    OpenCV 图像金字塔的实现示例

    本文将结合实例代码,介绍OpenCV 图像金字塔,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • c读取一行字符串,以及c++读取一行字符串的实例

    c读取一行字符串,以及c++读取一行字符串的实例

    今天小编就为大家分享一篇c读取一行字符串,以及c++读取一行字符串的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • C语言写一个散列表

    C语言写一个散列表

    这篇文章主要介绍了C语言写一个散列表,散列表,就是下标可以为字母的数组。更多内容和小编一起学习下面内容吧
    2022-01-01
  • 深入理解C++中的new和delete并实现对象池

    深入理解C++中的new和delete并实现对象池

    这篇文章主要介绍了C++中的new和delete并实现对象池,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09

最新评论