java opencv 轮廓检测,OpenCV 轮廓检测 - 雷霄骅(leixiaohua1020)的个人页面 - OSCHINA - 中文开源技术交流社区...
使用OpenCV可以对图像的轮廓进行检测。这是之前用过的代码,挺简单的,回顾一下。主要要进行以下2步操作:
1.cvThreshold():对图像进行二值化处理
2.cvFindContours():查找图像轮廓
注意:这个过程中图像要转化为灰度图。
/***********************************************************************
雷霄骅
***********************************************************************/
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
int main( int argc, char** argv )
{
//声明IplImage指针
IplImage* pImg = NULL;
IplImage* pContourImg = NULL;
CvMemStorage * storage = cvCreateMemStorage(0);
CvSeq * contour = 0;
int mode = CV_RETR_EXTERNAL;
if( argc == 3)
if(strcmp(argv[2], "all") == 0)
mode = CV_RETR_CCOMP; //内外轮廓都检测
//创建窗口
cvNamedWindow("src", 1);
cvNamedWindow("contour",1);
cvNamedWindow("threshold",1);
//载入图像,强制转化为Gray
if( argc >= 2 &&
(pImg = cvLoadImage( argv[1], 0)) != 0 )
{
cvShowImage( "src", pImg );
//为轮廓显示图像申请空间
//3通道图像,以便用彩色显示
pContourImg = cvCreateImage(cvGetSize(pImg),
IPL_DEPTH_8U,
3);
//copy source image and convert it to BGR image
cvCvtColor(pImg, pContourImg, CV_GRAY2BGR);
//----阈值分割-------------------------------------------
cvThreshold( pImg, pImg, 150, 255, CV_THRESH_BINARY );
cvShowImage( "threshold", pImg );
//-----------------------------------------------
//查找contour----------------输入必须是二值图像
cvFindContours( pImg, storage, &contour, sizeof(CvContour),
mode, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
}
else
{
//销毁窗口
cvDestroyWindow( "src" );
cvDestroyWindow( "contour" );
cvReleaseMemStorage(&storage);
return -1;
}
//将轮廓画出
cvDrawContours(pContourImg, contour,
CV_RGB(0,0,255), CV_RGB(255, 0, 0),
2, 2, 8, cvPoint(0,0));
//显示图像
cvShowImage( "contour", pContourImg );
cvWaitKey(0);
//销毁窗口
cvDestroyWindow( "src" );
cvDestroyWindow( "contour" );
//释放图像
cvReleaseImage( &pImg );
cvReleaseImage( &pContourImg );
cvReleaseMemStorage(&storage);
return 0;
}
源图像:
二值化以后:
轮廓:
java opencv 轮廓检测,OpenCV 轮廓检测 - 雷霄骅(leixiaohua1020)的个人页面 - OSCHINA - 中文开源技术交流社区...相关推荐
- java电子报刊网站_采集电子报纸 - 杨尚川的个人页面 - OSCHINA - 中文开源技术交流社区...
1.接口 /** *报纸采集器 * @author 杨尚川 */ public interface PaperCollector { /** * 下载当日报纸,一个文件对应一个版面 * @return ...
- java亲密数的解题思路,算法解题思路总结 - jjhgx的个人空间 - OSCHINA - 中文开源技术交流社区...
算法解题思路: 细读算法要求 找到极限情况 找到临界情况,结果依赖 找到最终的结束求解点 编程实现:考虑算法的空间复杂度和时间复杂度 案例说明: 假设: 输入字符串为:s, 长度为:slen, s的第 ...
- java 树的层次遍历_Java遍历树的层级 - osc_jegm3yg5的个人空间 - OSCHINA - 中文开源技术交流社区...
非科班出身,欢迎指正. 要实现的逻辑是,在一棵树中,给出任意一个节点,获取到该节点下的N个层级. 一.树型结构 下图的树中,节点上的字母代表节点的名字,字母下的代表该节点的下单金额. 二.数据准备 组 ...
- java有没有回调函数_Java中的回调函数 - wangjianme的个人空间 - OSCHINA - 中文开源技术交流社区...
Java代码的回调函数经常由框架或是系统定义,由程序开发人员填充. 它的最主要特点是即定义了调用的规范同时又非常的灵活. 回调函数有些类似于观察者模式,它们的区别在于:观察者模式返回的参数为Event ...
- java 锁的类型_Java锁的种类 - shawnplaying的个人页面 - OSCHINA - 中文开源技术交流社区...
Java锁和并发需要结合在一块了理解,涉及到了多个话题. 本文主要参考了 http://ifeve.com/java_lock_see1/ 但是我认为原文中有某些错误,我在下面的代码中做了修改. 公平 ...
- java 在界面上画一个时钟_编写程序显示一个时钟 - javaCoder的个人页面 - OSCHINA - 中文开源技术交流社区...
编写程序显示一个时钟.示例输出如图所示. 代码: package com.DisplayClock; import javax.swing.*; import java.awt.*; import j ...
- java构造函数重载继承_Java基础-继承 - 写代码换盆的个人空间 - OSCHINA - 中文开源技术交流社区...
访问权限 Java 中有三个访问权限修饰符:private.protected 以及 public,如果不加访问修饰符,表示包级可见. 可以对类或类中的成员(字段和方法)加上访问修饰符. 类可见表示其 ...
- java创建两个foo方法_Java类实例化原理 - osc_foo7glsg的个人空间 - OSCHINA - 中文开源技术交流社区...
Java对象的创建过程包括类初始化(类实例化两个阶段. 一.Java对象创建时机 (1)使用new关键字创建对象 (2)反射创建对象 使用Class类的newInstance方法 Student st ...
- java简述标识符和保留字区别_Java 基础语法 - 流年似水莫停留的个人页面 - OSCHINA - 中文开源技术交流社区...
Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...
最新文章
- java算法----排序----(6)希尔排序(最小增量排序)
- 所长不会用计算机,梅州市公安局: 两派出所所长不会电脑被停职
- jquery点击事件遇到的小bug
- 如何在一年内拥有十年的工作经验(值得你反复读5遍以上)
- ArrayList 有序集合 c#
- Linux内核dev_set_drvdata()和dev_get_drvdata()存储自定义结构体用法
- php gd测试代码,PHP gd_info()用法及代码示例
- Windows PE探秘
- Linux 安装.deb软件包之前 dpkg-deb 命令查看.deb文件详细信息 版本号 包名
- 在纯Win10环境下部署DzzOffice+OnlyOffice协同办公系统
- 如何在 Windows 上安装 ONLYOFFICE 文档 v7.2
- FDD and HDD
- win10重装系统打开分区或者磁盘提示无法访问解决办法
- c++/c 大整数乘法的分治与递归实现(string存储)
- os中的判断文件是否存在
- Python----获取http请求报文数据
- lotus系统可以再linux下运行吗,IBM Lotus Notes 8.5 在 MAC 和 Linux 系统安装的新特性
- mysql tcl 安装教程_TCL电视安装第三方应用软件的方法_简便教程
- 【金字塔Python量化学习笔记】01课:利用Python导出价格数据
- Beyond Compare for mac报错:这个授权密钥已被吊销,5386-2414
热门文章
- IOS开发(63)之GCD执行延迟操作
- 设计模式七:Adapter(适配器)——类对象结构型模式
- 【AWS】 AWS Free Usage Tier
- 在Delphi中使用Action降低水平功能和业务功能的耦合
- Python+ZeroMQ快速实现消息发布与订阅
- python读取json并列_python解析含有重复key的json方法
- java框架mangedv,Spring集成JPA后,报“Not an managed type: class x.x.x
- java做一个客房管理系统定制_开题报告基于Java的酒店客房管理系统的设计与实现.doc...
- js打印到控制台_如何实现可复用的控制台“艺术字”打印功能
- 力扣704,二分查找(JavaScript)