OpenCV -- 获取轮廓照片
import cv2
img = cv2.imread( 'E:\A.jpeg' )
cv2.imshow( 'img', img ) gray = cv2.cvtColor( img, cv2.COLOR_BGR2GRAY )
ret, binary = cv2.threshold( gray, 127, 255, cv2.THRESH_BINARY ) contours, hierarchy = cv2.findContours( binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE )
cv2.drawContours( img, contours, -1, ( 160, 240, 120 ), 3 ) cv2.imshow( 'img1', img )
cv2.waitKey( 0 )
cv2.destroyAllWindows()
cv2.findContours()函数:
參数:
參1(是寻找轮廓的图像)
參2(表示轮廓的检索模式)有四种:
(1).cv2.RETR_EXTERNAL 仅仅检測外轮廓
(2).cv2.RETR_LIST 检測的轮廓不建立等级关系
(3).cv2.RETR_CCOMP 建立两个等级的轮廓,
上面的一层为外边界。
里面的一层为内孔的边界信息。
假设内孔内另一个连通物体,
这个物体的边界也在顶层
(4).cv2.RETR_TREE 建立一个等级树结构的轮廓
參3(method为轮廓的近似办法):
(1)cv2.CHAIN_APPROX_NONE 存储全部的轮廓点,
相邻的两个点的像素位置差不超过1,
即max(abs(x1-x2),abs(y2-y1))==1
(2).cv2.CHAIN_APPROX_SIMPLE 压缩水平方向。
垂直方向,对角线方向的元素,
仅仅保留该方向的终点坐标。
比如一个矩形轮廓仅仅需4个点来保存轮廓信息
(3).cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS
使用teh-Chinl chain 近似算法
返回值:
值1:
是轮廓本身。
值2:
每条轮廓相应的属性。
OpenCV -- 获取轮廓照片的更多相关文章
- Python OpenCV4获取轮廓最大内切圆和外接圆
为了方便讲解,我们先来创建一个多边形做演示 第一步:创建图像,并绘制一个六边形.代码和生成图像如下: # Create an image r = 100 src = np.zeros((4*r, 4* ...
- OpenCV—Python 轮廓检测 绘出矩形框(findContours\ boundingRect\rectangle
千万注意opencv的轮廓检测和边缘检测是两码事 本文链接:https://blog.csdn.net/wsp_1138886114/article/details/82945328 1 获取轮廓 O ...
- OpenCV获取IP摄像头视频
从开源中国博客搬来,合并博客 实验室做一个智能小车的小项目,期间涉及到在PC端处理小车摄像头的视频.这里先用安卓手机代替一下进行试验.大致流程就是手机摄像头获取视频,开启一个IP摄像头服务软件,在局域 ...
- 【python+opencv】轮廓发现
python+opencv---轮廓发现 轮廓发现---是基于图像边缘提取的基础寻找对象轮廓的方法, 所有边缘提取的阈值选定会影响最终轮廓发现的结果. 介绍两种API使用: -cv.findConto ...
- 【opencv】轮廓相关
IplImage* contours_rect; IplImage* contours; CvMemStorage* countours_storage=NULL; if(contours_rect= ...
- 学习opencv跟轮廓相关的
查找轮廓 轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线.表示的方法可能根据不同情况而有所不同.有多重方法可以表示曲线.在openCV中一般用序列来存储轮廓信息.序列中的每一个元素 ...
- OpenCV 矩形轮廓检测
转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213, 来自:shiter编写程序的艺术 基础介绍 OpenCV里提取目 ...
- OpenCV 查找轮廓
本文将结合实例代码,介绍 OpenCV 如何查找轮廓.获取边界框. 代码: contours.py OpenCV 提供了 findContours 函数查找轮廓,需要以二值化图像作为输入.并指定些选项 ...
- mono for android 获取手机照片或拍照并裁剪保存
axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...
随机推荐
- Android:MD5加密
/** * @author gongchaobin * * MD5加密 * * @version 2013-8-22 */ public class MD5Util { // 用来将字节转换成 16 ...
- APP-PAY-06153 When Trying To Open Organization Definition Form (文档 ID 1323165.1)
In this Document Symptoms Cause Solution Applies to: Oracle Inventory Management - Version 11.5.10.2 ...
- hadoop 原理: 浅析Hadoop文件格式
Hadoop 作为MR 的开源实现,一直以动态运行解析文件格式并获得比MPP数据库快上几倍的装载速度为优势.不过,MPP数据库社区也一直批评Hadoop由于文件格式并非 为特定目的而建,因此序列化和反 ...
- [OpenSource]浅谈.Net和Java互相调用的三种方式
在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份额,不管谁对谁错,Java和.Net是目前应用开发的两个 ...
- sql server 修改表的默认值, 需要先删除约束条件
---------增加是否发布订单 if not exists(select 1 from syscolumns where name='iIsRelease' and id=OBJECT_ID('M ...
- HDU 1061
#include<stdio.h> #include<string.h> int a[10]; int main() { int T,n,i,k,temp,b,t; scanf ...
- ios 设备震动
使得iOS设备震动有两个方法,均是传入kSystemSoundID_Vibrate常量. AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); Au ...
- kafka的安装和使用
简单说kafka是一个高吞吐的分部式消息系统,并且提供了持久化. kafka的架构 • producer:消息生存者• consumer:消息消费者• broker:kafka集群的server,负责 ...
- bzoj 1878 [SDOI2009]HH的项链(离线处理+BIT)
Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...
- NOIP2015 运输计划(二分+LCA+差分)
4326: NOIP2015 运输计划 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 308 Solved: 208[Submit][Status] ...