• 使用OpenCV函数 findContours
  • 使用OpenCV函数 drawContours
  1. 滤波——消除噪声
  2. 增强——使边界轮廓更加明显
  3. 检测——选出边缘点

例程

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>using namespace cv;
using namespace std;Mat src; Mat src_gray;
int thresh = 100;
int max_thresh = 255;
RNG rng(12345);/// Function header
void thresh_callback(int, void* );/** @function main */
int main( int argc, char** argv )
{/// 加载源图像src = imread( argv[1], 1 );/// 转成灰度并模糊化降噪cvtColor( src, src_gray, CV_BGR2GRAY );blur( src_gray, src_gray, Size(3,3) );/// 创建窗体char* source_window = "Source";namedWindow( source_window, CV_WINDOW_AUTOSIZE );imshow( source_window, src );createTrackbar( " Canny thresh:", "Source", &thresh, max_thresh, thresh_callback );thresh_callback( 0, 0 );waitKey(0);return(0);
}/** @function thresh_callback */
void thresh_callback(int, void* )
{Mat canny_output;vector<vector<Point> > contours;vector<Vec4i> hierarchy;/// 用Canny算子检测边缘Canny( src_gray, canny_output, thresh, thresh*2, 3 );/// 寻找轮廓findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );/// 绘出轮廓Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 );for( int i = 0; i< contours.size(); i++ ){Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );}/// 在窗体中显示结果namedWindow( "Contours", CV_WINDOW_AUTOSIZE );imshow( "Contours", drawing );
}

结果


这个场景有点复杂,也检测出了很多轮廓

手掌

手绘

OpenCV 在图像中寻找轮廓相关推荐

  1. OpenCV在图像中寻找轮廓的实例(附完整代码)

    OpenCV在图像中寻找轮廓的实例 OpenCV在图像中寻找轮廓的实例 OpenCV在图像中寻找轮廓的实例 #include "opencv2/imgcodecs.hpp" #in ...

  2. OpenCV在图像中寻找轮廓

    OpenCV在图像中寻找轮廓 在图像中寻找轮廓 目标 代码 结果 在图像中寻找轮廓 目标 在本教程中,您将学习如何: 使用OpenCV函数cv :: findContours 使用OpenCV函数cv ...

  3. OpenCV之imgproc 模块. 图像处理(5)在图像中寻找轮廓 计算物体的凸包 创建包围轮廓的矩形和圆形边界框 为轮廓创建可倾斜的边界框和椭圆 轮廓矩 多边形测试

    在图像中寻找轮廓 目标 在这个教程中你将学到如何: 使用OpenCV函数 findContours 使用OpenCV函数 drawContours 原理 例程 教程的代码在下面给出. 你也可以从 这里 ...

  4. 使用Python,OpenCV从图像中删除轮廓

    使用Python,OpenCV从图像中删除轮廓 1. 效果图 2. 步骤 3. 源码 4. 参考 1. 使用Python.OpenCV计算轮廓的中心并标记 2. 使用Python.OpenCV检测轮廓 ...

  5. 教你如何使用 OpenCV检测图像中的轮廓

    @Author:Runsen 轮廓是连接所有具有某种颜色或强度的连续点的闭合曲线,它们代表图像中发现的对象的形状.轮廓检测是一种用于形状分析和物体检测和识别的有用技术. 轮廓检测并不是图像分割的唯一算 ...

  6. 使用Python和OpenCV检测图像中的条形码

    使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...

  7. 使用Python,OpenCV寻找图像中的轮廓

    使用Python和OpenCV查找图像中的形状 1. 效果图 2. 步骤 3. 源码 参考 这篇博客将讨论使用Python和OpenCV查找图像中的形状,具体是 cv2.inRange在图像中查找形状 ...

  8. OpenCV演示代码以查找图像中的轮廓(附完整代码)

    OpenCV演示代码以查找图像中的轮廓 OpenCV演示代码以查找图像中的轮廓 OpenCV演示代码以查找图像中的轮廓 #include "opencv2/imgcodecs.hpp&quo ...

  9. opencv 模板匹配,在图像中寻找物体

    使用模板匹配在图像中寻找物体 模板匹配 模板匹配就是用来在大图中找小图,也就是说在一副图像中寻找另外一张模板图像的位置: opencv中用 cv.matchTemplate() 实现模板匹配. 模板匹 ...

最新文章

  1. 单步调试 step into/step out/step over 区别
  2. #if DEBUG与条件(“ DEBUG”)
  3. register_chrdev深入分析
  4. iOS开发—在@interface,@implementation和@property中变量的定义
  5. Spring事务配置方式(一) 拦截器方式配置
  6. 我的一些学习经验:视频流媒体方面
  7. Dubbo 学习总结(12)—— 十年再出发,Dubbo 3.0 Preview 即将在 3 月发布
  8. 写给《我也能做CTO》作者的一封信
  9. sublime text 安装及使用
  10. GameOfMir俗称GOM引擎源代码全套完整版
  11. L2TP设置-如果更改了公网IP,需要更改哪些东西?
  12. C语言解决渔夫打鱼晒网问题
  13. OpenRisc-6-wishbone实验
  14. c/c++源码学习和实践资源,万丈高楼平地起
  15. 编码解码--url编码解码
  16. 【FNN回归预测】基于matlab蝙蝠算法优化前馈神经网络数据回归预测【含Matlab源码 2070期】
  17. NoSql数据库简介及Redis学习
  18. 互联网早报:滴滴正式启动造车,滴滴副总裁、小桔车服总经理杨峻负责
  19. 03-MySQL:DBeaver 客户端使用
  20. 小型企业局域网搭建(一)

热门文章

  1. 用户研究,你还在“凭感觉”吗?
  2. 【BZOJ 1877】 [SDOI2009]晨跑(费用流)
  3. 《Enterprise Library深入解析与灵活应用》博文系列汇总
  4. Elam的caffe笔记之配置篇(一):CentOS6.5编译安装gcc4.8.2
  5. [20160813]12c开启附加日志问题.txt
  6. 以交互方式安装ESXi 6.0
  7. Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令...
  8. Android 基础教程之-------Android ProgressBar的使用!
  9. ORACLE EBS中OAF屏蔽的错误
  10. Confluence 6 升级完成后的检查