获取最大轮廓 opencv
opencv3计算图像中轮廓的面积http://blog.csdn.net/qq_23880193/article/details/49256999
http://blog.csdn.net/davebobo/article/details/52583167
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<imgproc/imgproc.hpp> using namespace std;
using namespace cv; int main(){ Mat image = cvLoadImage("group.jpg"); Mat grayImage; cvtColor(image, grayImage, CV_BGR2GRAY); //转换为二值图 Mat binaryImage; threshold(grayImage, binaryImage, 90, 255, CV_THRESH_BINARY); //二值图 这里进行了像素反转,因为一般我们用255白色表示前景(物体),用0黑色表示背景 Mat reverseBinaryImage; bitwise_not(binaryImage, reverseBinaryImage); vector <vector<Point>>contours; findContours(reverseBinaryImage, contours, //轮廓的数组 CV_RETR_EXTERNAL, //获取外轮廓 CV_CHAIN_APPROX_NONE); //获取每个轮廓的每个像素 //在白色图像上绘制黑色轮廓 Mat result(reverseBinaryImage.size(), CV_8U, Scalar(255)); drawContours(result, contours, -1, //绘制所有轮廓 Scalar(0), //颜色为黑色 2); //轮廓线的绘制宽度为2 namedWindow("contours"); imshow("contours", result); //移除过长或过短的轮廓 int cmin = 100; //最小轮廓长度 int cmax = 1000; //最大轮廓 vector<vector<Point>>::const_iterator itc = contours.begin(); while (itc!=contours.end()) { if (itc->size() < cmin || itc->size() > cmax) itc = contours.erase(itc); else ++itc; } //在白色图像上绘制黑色轮廓 Mat result_erase(binaryImage.size(), CV_8U, Scalar(255)); drawContours(result_erase, contours, -1, //绘制所有轮廓 Scalar(0), //颜色为黑色 2); //轮廓线的绘制宽度为2 namedWindow("contours_erase"); imshow("contours_erase", result_erase); waitKey(0); return 0;
}
获取最大轮廓 opencv相关推荐
- 二值mask图像 + RGB原图 生成可视化分割结果; 从二值mask获取分割轮廓点
可视化分割结果: import cv2 import numpy as np from tqdm import tqdm from PIL import Image from pathlib impo ...
- java读取dcm影像文件_使用dcmtk库读取.dcm文件并获取信息+使用OpenCV显示图像
借助VS2013和OpenCV的绘图功能,在工程DICOMReader.sln中实现了对单张.dcm图像的读取与显示,以下是详细步骤. 前期准备工作 编译器:VS2013 库:dcmtk-3.6.0( ...
- c语言编程获取摄像头图像,OpenCV 获取摄像头图像数据并显示
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 用摄像头来获取数据的应用其实并不算太多,最近刚刚好用到,查了下用OpenCV来实现非常方便 ...
- 06- OpenCV查找图像轮廓 (OpenCV系列) (机器视觉)
知识重点 灰度图转换: gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 二值化: 返回两个东西,一个阈值, 一个是二值化的图: thresh, binar ...
- 【Harvest源码分析】获取F0轮廓
频率36.629HZ 频率44.321HZ 频率50.037HZ 频率54.566HZ 频率60.545HZ 频率66.024HZ 频率74.539HZ 频率84.152HZ 频率95.005HZ 频 ...
- python中cv2提取图像rgb值,获取RGB值opencv python
I am loading an image into python e.g. image = cv2.imread("new_image.jpg") How can i accce ...
- OpenCV+python:轮廓发现与对象测量
1,轮廓发现 当通过阈值分割提取到图像中的目标物体后,就需要通过边缘检测来提取目标物体的轮廓,使用这两种方法基本能够确定物体的边缘或者前景.接下来,通常需要做的是拟合这些边缘的前景,如拟合出包含前景或 ...
- 【opencv】(6) 图像轮廓处理
各位同学好,今天和大家分享一下opencv中如何获取图像轮廓,以及对轮廓的一些其他操作.内容有: (1)轮廓检测:cv2.findContours():(2)轮廓绘制:cv2.drawContours ...
- 基于OpenCV修复表格缺失的轮廓--如何识别和修复表格识别中的虚线
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...
最新文章
- 在Ubuntu中使用远程桌面
- 田志刚:写文章的两个好处
- 访问控制允许原始多个域?
- 30岁自学python找工作-程序员自学Python开发,20到30岁几乎决定了你的未来!
- Django的外键创建
- python中cumsum_在python里“np.cumsum”这个命令是干什么的?怎么使用?
- 学成在线--0.项目概述
- Linux实用代码--文件系统操作
- Mybatis高级应用 整合Ehcache
- Q81:“三角形网格”之“PLY文件”
- S3C2440裸机------异常与中断__按键中断程序示例
- java图片转pdf_java使用itextpdf将图片转换成pdf的简单实例 | 学步园
- 计网——计算机网络和互联网
- cpu load是什么?
- 软件设计——云原生12要素
- 【随笔记】Deepin20系统更换fish,替代bash
- java和dba哪个好_你的性格适合做DBA吗?面试者必看
- 单片机毕设 stm32人体健康状态检测系统(项目开源)
- 在PRESS.one这片蛮荒沃土上,我们都是拓荒者
- 此起彼伏 竞相盛放?!!