点多边形测试
测试一个点是否在给定的多边形内部,边缘或者外部
double pointPolygonTest(
InputArray contour, // 输入的轮廓
Point2f pt, // 测试点
bool measureDist // 是否返回距离值,如果是false,1表示在内面,0表示在边界上,-1表示在外部,true返回实际距离
)
步骤
构建一张400x400大小的图片, Mat::Zero(, , CV_8UC1)
画上一个六边形的闭合区域line
发现轮廓
对图像中所有像素点做点 多边形测试,得到距离,归一化后显示。
int main(int argc, char** argv) {
const int r = ;
Mat src = Mat::zeros(r * , r * , CV_8UC1); vector<Point2f> vert();
vert[] = Point( * r / , static_cast<int>(1.34*r));
vert[] = Point( * r, * r);
vert[] = Point( * r / , static_cast<int>(2.866*r));
vert[] = Point( * r / , static_cast<int>(2.866*r));
vert[] = Point( * r, * r);
vert[] = Point( * r / , static_cast<int>(1.34*r)); for (int i = ; i < ; i++) {
line(src, vert[i], vert[(i + ) % ], Scalar(), , , );
}
// 画一个六边型
imshow("input_win", src); vector<vector<Point>> contours;
vector<Vec4i> hierachy;
Mat csrc;
src.copyTo(csrc);
//边界发现
findContours(csrc, contours, hierachy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(, ));
Mat raw_dist = Mat::zeros(csrc.size(), CV_32FC1);
for (int row = ; row < raw_dist.rows; row++) {
for (int col = ; col < raw_dist.cols; col++) {
double dist = pointPolygonTest(contours[], Point2f(static_cast<float>(col), static_cast<float>(row)), true);
raw_dist.at<float>(row, col) = static_cast<float>(dist);
}
} double minValue, maxValue;
minMaxLoc(raw_dist, &minValue, &maxValue, , , Mat());
Mat drawImg = Mat::zeros(src.size(), CV_8UC3);
for (int row = ; row < drawImg.rows; row++) {
for (int col = ; col < drawImg.cols; col++) {
float dist = raw_dist.at<float>(row, col);
if (dist > ) {
//内部
drawImg.at<Vec3b>(row, col)[] = (uchar)(abs(1.0 - (dist / maxValue)) * );
}
else if (dist < ) {
//外部
drawImg.at<Vec3b>(row, col)[] = (uchar)(abs(1.0 - (dist / minValue)) * );
}
else {
//边缘
drawImg.at<Vec3b>(row, col)[] = (uchar)(abs( - dist));
drawImg.at<Vec3b>(row, col)[] = (uchar)(abs( - dist));
drawImg.at<Vec3b>(row, col)[] = (uchar)(abs( - dist));
}
}
} imshow("output_win", drawImg); waitKey();
return ;
}

opencv::点多边形测试的更多相关文章

  1. windows10(x64)+Qt+opencv配置及测试

    本电脑系统:Windows10 64位 要下载的文件: 1.Qt 5.6.0 for Windows 32-bit,下载地址:(可以复制链接地址,用迅雷下载,速度快) http://download. ...

  2. ubuntu 14.04 安装opencv 3.0 测试

    安装opencv 前面步骤参考 http://my.oschina.net/u/1757926/blog/293976 主要修改测试代码 1. 先从sourceforge上下载OpenCV的源码 2. ...

  3. 【Java 其他】Java opencv配置及测试

    毕竟研究生做cv,所以这里还是测试一下java上使用opencv,参考 这里 import org.opencv.core.Core; import org.opencv.core.CvType; i ...

  4. OpenCV 传统分割测试

    github官网源文件:https://github.com/opencv/opencv/tree/master/samples/python 最好是先克隆整个仓库下来,再测试里面的:floodfil ...

  5. vs2012配置opencv及简单测试

    为visual studio2012搭建openCV平台,实现打开图片. 实现步骤: 1.1.配置环境变量 基于win7操作系统的环境配置步骤: 1.1.1 计算机—>属性—>更改设置—& ...

  6. OpenCV安装和测试

    参考链接:http://blog.csdn.net/bruce_zeng/article/details/7961153 OpenCv下载链接:http://sourceforge.net/proje ...

  7. [opencv]approxDP多边形逼近获取四边形轮廓信息

    #include "opencv2/opencv.hpp" #include <iostream> #include <math.h> #include & ...

  8. OpenCV——使用多边形包围轮廓

  9. [opencv]计算多边形逼近曲线的长度

    //利用曲线逼近,计算逼近曲线的长度 //首先创建一个逼近曲线 vector<Point2f> approx; approxPolyDP(contours[i], approx, 2, t ...

随机推荐

  1. SQL手工注入基础篇

    0.前言 本篇博文是对SQL手工注入进行基础知识的讲解,更多进阶知识请参考进阶篇(咕咕),文中有误之处,还请各位师傅指出来.学习本篇之前,请先确保以及掌握了以下知识: 基本的SQL语句 HTTP的GE ...

  2. Linux 笔记 - 第十四章 LAMP 之(一) 环境搭建

    博客地址:http://www.moonxy.com 一.前言 LAMP 是 Linux Apache MySQL PHP 的简写,即把 Apache.MySQL 以及 PHP 安装在 Linux 系 ...

  3. PopUpWindow 的使用笔记

    最接做需求的时候,碰到了 PopUpWindow,但是也没做过多了解,就是照搬别人的代码改改逻辑.后面视觉看了之后,说让我加一些动画效果,使用起来更加舒服.可是我看别人以前也没有写,于是就开始捣鼓 P ...

  4. Eclipse通过SVN导入项目遇到的问题记录

    问题一.把子项目导入为project 原因:一个大的文件夹,里面有各个小项目,需要把自己添加需求的醒目导入为Maven Project 1.右键选 Import as project 2.右键 -&g ...

  5. python的pywinrm模块远程连接windows执行dos命令

    ----A机器远程连接B---- 在A机器上安装模块: pip install pywinrm 在B机器上配置winrm服务的相关配置,使其支持远程控制: (winrm服务是windows 一种方便远 ...

  6. kvm-web管理工具webvirtmgr

    前言: 使用开源的虚拟化技术,对公司自有的少数服务器进行虚拟化,在满足业务需求的同时,并未增加投入,同时也避免了使用云主机的不便,技术层面,kvm是开源的虚拟化产品,虚拟化性能出众,更重要的是免费!! ...

  7. Linux 伪终端(pty)

    通过<Linux 终端(TTY)>一文我们了解到:我们常说的终端分为终端 tty1-6 和伪终端.使用 tty1-6 的情况一般为 Linux 系统直接连了键盘和显示器,或者是使用了 vS ...

  8. php-fpm启动,重启,退出

    首先确保php-fpm正常安装,运行命令php-fpm -t输出查看: ##确定php-fpm配置正常 [root@iz2vcf47jzvf8dxrapolf7z php7.-Oct-::] NOTI ...

  9. IDEA 学习笔记之 安装和基本配置

    安装和基本配置: 下载:https://www.jetbrains.com/idea/download/#section=windows 下载Zip安装包: 基础知识: Eclipse的工作区=IDE ...

  10. Scala 学习笔记之集合(5)

    import collection.mutable.Buffer object CollectionDemo6 { def main(args: Array[String]): Unit = { // ...