opencv的话如何统计,轮廓内部的像素点个数?

shiter
人工智能领域优质创作者
博客专家认证
2014-02-26 10:47:31
有哪些办法,二值化完后统计,我觉的可以,但是这个

比方说,我现在有一片叶子,检测出来轮廓,统计叶子轮廓内部所占的像素个数,都有哪些办法?
使用opencv的话
...全文
3938 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
松下问童子 2015-10-15
  • 打赏
  • 举报
回复
请问,通过findContours()函数找到轮廓以后,我如何操作轮廓内的所有像素点?比如找出叶子的轮廓以后,叶子内部的点都设成一种颜色,叶子外面的点设成另一种颜色。
wjw2586121 2014-11-16
  • 打赏
  • 举报
回复
http://bbs.rongkevision.com/forum.php?mod=viewthread&tid=41&extra=page%3D1 这里面有个例子 估计跟你的需求比较像,你可以参考参考
wqvbjhc 2014-02-27
  • 打赏
  • 举报
回复
对二值化图像执行countNonZero。可得到非零像素点数
fengbingchun 2014-02-27
  • 打赏
  • 举报
回复
赵4老师 2014-02-27
  • 打赏
  • 举报
回复
ContourArea 计算整个轮廓或部分轮廓的面积 double cvContourArea( const CvArr* contour, CvSlice slice=CV_WHOLE_SEQ ); contour 轮廓 (边界点的序列或数组). slice 感兴趣轮廓部分的起始点,缺省是计算整个轮廓的面积。 函数 cvContourArea 计算整个轮廓或部分轮廓的面积。 对后面的情况,面积表示轮廓部分和起始点连线构成的封闭部分的面积。 备注: 轮廓的方向影响面积的符号。因此函数也许会返回负的结果。应用函数 fabs() 得到面积的绝对值。
学习opencv(中文版) 清华大学出版社 出版前言 译者序 写在前面的话 前言 第1章 概述 什么是OpenCV OpenCV的应用领域 什么是计算机视觉 OpenCV的起源 下载和安装OpenCV 通过SVN获取最新的OpenCV代码 更多OpenCV文档 OpenCV的结构和内容 移植性 练习 第2章 OpenCV入门 开始准备 初试牛刀—— 显示图像 第二个程序—— 播放AVI视频 视频播放控制 一个简单的变换 一个复杂一点的变换 从摄像机读入数据 写入AVI视频文件 小结 练习 第3章 初探OpenCV OpenCV的基本数据类型 CvMat矩阵结构 IplImage数据结构 矩阵和图像操作 绘图 数据存储 集成性能基元 小结 练习 第4章 细说HighGUI 一个可移植的图形工具包 创建窗口 载入图像 显示图像 视频的处理 ConvertImage函数 练习 第5章 图像处理 综述 平滑处理 图像形态学 漫水填充算法 尺寸调整 图像金字塔 阈值化 练习 第6章 图像变换 概述 卷积 梯度和Sobel导数 拉普拉斯变换 Canny算子 霍夫变换 重映射 拉伸、收缩、扭曲和旋转 CartToPolar与PolarToCart LogPolar 离散傅里叶变换(DFT) 离散余弦变换(DCT) 积分图像 距离变换 直方图均衡化 练习 第7章 直方图与匹配 直方图的基本数据结构 访问直方图 直方图的基本操作 一些更复杂的策略 练习 第8章 轮廓 内存 序列 查找轮廓 Freeman链码 轮廓例子 另一个轮廓例子 深入分析轮廓 轮廓的匹配 练习 第9章 图像局部与分割 局部与分割 背景减除 分水岭算法 用Inpainting修补图像 均值漂移分割 Delaunay三角剖分和Voronoi 划分 练习 第10章 跟踪与运动 跟踪基础 寻找角点 亚像素级角点 不变特征 光流 mean-shift和camshift跟踪 运动模板 预估器 condensation算法 练习 第11章 摄像机模型与标定 摄像机模型 标定 矫正 一次完成标定 罗德里格斯变换 练习 第12章 投影与三维视觉 投影 仿射变换和透视变换 POSIT:3D姿态估计 立体成像 来自运动的结构 二维和三维下的直线拟合 练习 第13章 机器学习 什么是机器学习 OpenCV机器学习算法 Mahalanobis距离 K均值 朴素贝叶斯分类 二叉决策树 ..........
本书针的读者是高校学生,科研工作者,图像处理爱好者。对于这些 人群,他们往往是带着具体的问题,在苦苦寻找解决方案。为了一个小问 题就让他们去学习 C++ 这么深奥的语言几乎是不可能的。而 Python 的悄 然兴起给他们带来的希望,如果说 C++ 是 tex 的话,那 Python 的易用性 相当于 word。他们可以很快的看懂本书的所有代码,并可以学着使用它们 来解决自己的问题,同时也能拓展自己的视野。别人经常说 Python 不够 快,但是对于上面的这些读者,我相信这不是问题,现在我们日常使用的 PC 机已经无比强大了,而且绝大多数情况下不会用到实时处理,更不会在 嵌入式设备上使用。因此这不是问题。 本书目录: 目录 I 走进 OpenCV 10 1 关于 OpenCV-Python 教程 10 2 在 Windows 上安装 OpenCV-Python 11 3 在 Fedora 上安装 OpenCV-Python 12 II OpenCV 中的 Gui 特性 13 4 图片 13 4.1 读入图像 4.2 显示图像 4.3 保存图像 4.4 总结一下 5 视频 5.1 用摄像头捕获视频 5.2 从文件中播放视频 5.3 保存视频 6 OpenCV 中的绘图函数 6.1 画线 6.2 画矩形 6.3 画圆 6.4 画椭圆 6.5 画多边形 6.6 在图片上添加文字 7 把鼠标当画笔 7.1 简单演示 7.2 高级一点的示例 8 用滑动条做调色板 8.1 代码示例 III 核心操作 9 图像的基础操作 9.1 获取并修改像素值 9.2 获取图像属性 9.3 图像 ROI 9.4 拆分及合并图像通道 9.5 为图像扩边(填充) 10图像上的算术运算 10.1图像加法 10.2图像混合 10.3按位运算 11程序性能检测及优化 11.1使用 OpenCV 检测程序效率 11.2OpenCV 中的默认优化 11.3在 IPython 中检测程序效率 11.4更多 IPython 的魔法命令 11.5效率优化技术 12OpenCV 中的数学工具 IV OpenCV 中的图像处理 13颜色空间转换 54 13.1转换颜色空间 13.2物体跟踪 13.3怎样找到要跟踪对象的 HSV 值? 14几何变换 14.1扩展缩放 14.2平移 14.3旋转 14.4仿射变换 14.5透视变换 15图像阈值 15.1简单阈值 15.2自适应阈值 15.3Otsu’s 二值化 15.4Otsu’s 二值化是如何工作的? 16图像平滑 16.1平均 16.2高斯模糊 16.3中值模糊 16.4双边滤波 17形态学转换 17.1腐蚀 17.2膨胀 17.3开运算 17.4闭运算 17.5形态学梯度 17.6礼帽 17.7黑帽 17.8形态学操作之间的关系 18图像梯度 18.1Sobel 算子和 Scharr 算子 87 18.2Laplacian 算子 19Canny 边缘检测 19.1原理 19.1.1噪声去除 19.1.2计算图像梯度 19.1.3非极大值抑制 19.1.4滞后阈值 19.2OpenCV 中的 Canny 边界检测 20图像金字塔 94 20.1原理 21OpenCV 中的轮廓 22直方图 23图像变换 24模板匹配 25Hough 直线变换 26Hough 圆环变换 27分水岭算法图像分割 28使用 GrabCut 算法进行交互式前景提取 29理解图像特征 30Harris 角点检测 31Shi-Tomasi 角点检测 & 适合于跟踪的图像特征 32介绍 SIFT(Scale-Invariant Feature Transform) 33介绍 SURF(Speeded-Up Robust Features) 34角点检测的 FAST 算法 35BRIEF(BinaryRobustIndependentElementaryFeatures) 36.1OpenCV 中的 ORB 算法 37特征匹配 38使用特征匹配和单应性查找对象 39Meanshift 和 Camshift 40.3OpenCV 中的 Lucas-Kanade 光流 41背景减除 238 41.1基础 42摄像机标定 43姿势估计 44对极几何(Epipolar Geometry) 45立体图像中的深度地图 259 45.1基础 46K 近邻(k-Nearest Neighbour ) 47支持向量机 48K 值聚类 49图像去噪 50图像修补 51使用 Haar 分类器进行面部检测
一、主要内容:OpenCV能够实现强大丰富的图像处理,但是它缺少一个能够支持它运行的界面。Csharp经过多年的发展,得益于它的“所见及所得”能力,非常方便编写界面。这两者如果能够“双剑合璧”,将有效帮助实际工作产出。本课着重推荐GOCW采用“Csharp基于CLR直接调用Opencv编写的算法库”方法,能够将最新的OpenCV技术引入进来,同时保证生成程序的最小化。    为了进一步说明Csharp和OpenCV的结合使用,首先一个较为完整的基于winform实现答题卡识别的例子,相比较之前的实现,本次进一步贴近生产实际、内涵丰富,对算法也进行了进一步提炼。同时我们对WPF下对OpenCV函数的调用、OpenCV.js的调用进行相关教授。       二、课程结构1、 EmguCV、OpenCVSharp和GOCW之间进行比较(方便代码编写、能够融入最新的算法、速度有保障、方便调试找错、拒绝黑箱化);2、视频采集模块的构建,视频采集和图像处理之间的关系;3、视频采集专用的SDK和“陪练”系统的介绍;4、在视频增强类项目中和图像处理项目中,算法的选择;5、Csharp界面设计、图片的存储和其他构建设计;6、较为完整的答题卡识别例子,兼顾界面设计和算法分析;8、WPF基于GOCW也同样可以基于GOCW实现算法调用;webForm虽然也可以通过类似方法调用,但是OpenCV.JS的方法更现代高效。9、关于软件部署的相关要点和窍门。       三、知识要点:1、基本环境构建和程序框架;2、CLR基本原理和应用方法;3、接入、采集、模拟输入;4、图像处理,通过构建循环采集图片;5、增强和实时处理;6、基于投影等技术的答题卡识别算法;7、存储、转换;8、部署交付。        课程能够帮助你掌握Csharp调用Opencv的基本方法,获得相应框架代码和指导;从而进一步提升实现“基于图像处理”的解决方案能力。  
import cv2 as cv import numpy as np #直线检测 #使用霍夫直线变换做直线检测,前提条件:边缘检测已经完成 #标准霍夫线变换 def line_detection(image): gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) edges = cv.Canny(gray, 50, 150) #apertureSize参数默认其实就是3 cv.imshow("edges", edges) #cv.HoughLines参数设置:参数1,灰度图像;参数二,以像素为单位的距离精度(一般都是1,进度高,但是速度会慢一点) #参数三,以弧度为单位的角度精度(一般是1rad);参数四,阈值,大于阈值threshold的线段才可以被检测通过并返回到结果中 #该函数返回值为rho与theta lines = cv.HoughLines(edges, 1, np.pi/180, 200) for line in lines: rho, theta = line[0] #line[0]存储的是点到直线的极径和极角,其中极角是弧度表示的。 a = np.cos(theta) #theta是弧度 b = np.sin(theta) x0 = a * rho #代表x = r * cos(theta) y0 = b * rho #代表y = r * sin(theta) x1 = int(x0 + 1000 * (-b)) #计算直线起点横坐标 y1 = int(y0 + 1000 * a) #计算起始起点纵坐标 x2 = int(x0 - 1000 * (-b)) #计算直线终点横坐标 y2 = int(y0 - 1000 * a) #计算直线终点纵坐标 注:这里的数值1000给出了画出的线段长度范围大小,数值越小,画出的线段越短,数值越大,画出的线段越长 cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) #点的坐标必须是元组,不能是列表。 cv.imshow("image-lines", image) #统计概率霍夫线变换 def line_detect_possible_demo(image): gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) edges = cv.Canny(gray, 50, 150, apertureSize=3) # apertureSize参数默认其实就是3 lines = cv.HoughLinesP(edges, 1, np.pi / 180, 60, minLineLength=60, maxLineGap=5) for line in lines: x1, y1, x2, y2 = line[0] cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) cv.imshow("line_detect_possible_demo",image) src = cv.imread("E:/opencv/picture/track.jpg") print(src.shape) cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE) cv.imshow('input_image', src) line_detection(src) src = cv.imread("E:/opencv/picture/track.jpg") #调用上一个函数后,会把传入的src数组改变,所以调用下一个函数时,要重新读取图片 line_detect_possible_demo(src) cv.waitKey(0) cv.destroyAllWindows() 霍夫检测直线原理: 关于hough变换,核心以及难点就是关于就是有原始空间到参数空间的变换上。以直线检测为例,假设有一条直线L,原点到该直线的垂直距离为p,垂线与x轴夹角为θθ,那么这条直线是唯一的,且直线的方程为 ρ=xcosθ+ysinθρ=xcosθ+ysinθ, 如下图所

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧