1、pointPolygonTest函数

函数作用:

用于检测一个点是不是在轮廓上或者多边形上,,或者计算点到轮廓或者多边形的距离

2、pointPolygonTest函数调用形式

C++:double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)

参数详解:

InputArray contour:表示轮廓或者多边形

Point2f pt:所检测的二维点,float型的点(x,y)坐标的点

bool measureDist:表示是不是检测到轮廓的距离,当是true检测点到轮廓的距离,是false检测点是不是在轮廓上

opencv代码:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>using namespace cv;
using namespace std;/** @function main */
int main( int argc, char** argv )
{/// 创建一个图形     const int r = 100;Mat src = Mat::zeros( Size( 4*r, 4*r ), CV_8UC1 );/// 绘制一系列点创建一个轮廓:vector<Point2f> vert(6);vert[0] = Point( 1.5*r, 1.34*r );vert[1] = Point( 1*r, 2*r );vert[2] = Point( 1.5*r, 2.866*r );vert[3] = Point( 2.5*r, 2.866*r );vert[4] = Point( 3*r, 2*r );vert[5] = Point( 2.5*r, 1.34*r );/// 在src内部绘制for( int j = 0; j < 6; j++ ){ line( src, vert[j],  vert[(j+1)%6], Scalar( 255 ), 3, 8 ); }/// 得到轮廓vector<vector<Point> > contours; vector<Vec4i> hierarchy;Mat src_copy = src.clone();findContours( src_copy, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);/// 计算到轮廓的距离Mat raw_dist( src.size(), CV_32FC1 );for( int j = 0; j < src.rows; j++ ){ for( int i = 0; i < src.cols; i++ ){ raw_dist.at<float>(j,i) = pointPolygonTest( contours[0], Point2f(i,j), true ); }}double minVal; double maxVal;minMaxLoc( raw_dist, &minVal, &maxVal, 0, 0, Mat() );minVal = abs(minVal); maxVal = abs(maxVal);/// 图形化的显示距离Mat drawing = Mat::zeros( src.size(), CV_8UC3 );for( int j = 0; j < src.rows; j++ ){ for( int i = 0; i < src.cols; i++ ){if( raw_dist.at<float>(j,i) < 0 ){ drawing.at<Vec3b>(j,i)[0] = 255 - (int) abs(raw_dist.at<float>(j,i))*255/minVal; }else if( raw_dist.at<float>(j,i) > 0 ){ drawing.at<Vec3b>(j,i)[2] = 255 - (int) raw_dist.at<float>(j,i)*255/maxVal; }else{ drawing.at<Vec3b>(j,i)[0] = 255; drawing.at<Vec3b>(j,i)[1] = 255; drawing.at<Vec3b>(j,i)[2] = 255; }}}/// 创建窗口显示结果char* source_window = "Source";namedWindow( source_window, CV_WINDOW_AUTOSIZE );imshow( source_window, src );namedWindow( "Distance", CV_WINDOW_AUTOSIZE );imshow( "Distance", drawing );waitKey(0);return(0);
}

pointPolygonTest函数相关推荐

  1. python 判断多边形,点是否重合(方法简单易懂,没有使用 cv2.pointPolygonTest函数)

    python 判断多边形,点是否重合 首先代码并未使用 cv2.pointPolygonTest 这一opencv函数,因为自己在使用时,一直报错,很难自己构造出适用于 pointPolygonTes ...

  2. OpenCV 常用函数汇总(bitwise_*、pointPolygonTest、morphologyEx)

    两图像间的像素操作 cv::bitwise_and() 函数原型 //像素求"与"运算CV_EXPORTS_W void bitwise_and(InputArray src1,I ...

  3. findContours函数

    1.findContours函数 函数的作用: 查找图像的轮廓 2.findContours函数,这个函数的原型为: void findContours(InputOutputArray image, ...

  4. python使用opencv查找轮廓_(八)OpenCV-Python学习—轮廓查找,绘制和拟合

    针对物体轮廓,opencv还提供了一些相关的函数,来处理轮廓查找,绘制,拟合,以及计算轮廓周长和面积等,详细介绍如下: 1. 寻找和绘制轮廓 opencv的findContours()能寻找图片中的轮 ...

  5. opencv形状识别学习总结

    OpenCV基元检测 Primitive Detection 目录 基元的概念 基元泛指图像中有特点的单元.常说的基元有:边缘.角点.斑点.直线段.圆.等 基元检测是图像分析的基础 边缘(Edge)检 ...

  6. OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)

    OpenCV学习笔记(十一)--谈谈像素的类型和对Templates的限制使用 Templates是c++的一个很强大的特征,可以是数据结构更加安全高效.但也会增加编译时间和代码的长度,当函数被频繁调 ...

  7. opencv 梯度幅值_OpenCV边缘检测的详细参数调节

    findContours函数,这个函数的原型为: void findContours( InputOutputArray image, OutputArrayOfArrayscontours, Out ...

  8. OpenCV学习——轮廓检测

    前言 轮廓检测是传统视觉中非常常用的功能,这里简单记录一下opencv中的轮廓检测算法使用方法,至于理论,后续有机会再去细品. 国际惯例: OpenCV官方的轮廓检测教程python版 OpenCV中 ...

  9. 准确检测图像的轮廓 opencv_OpenCV图像处理-轮廓和轮廓特征

    OpenCV 中的轮廓 ✏️问:什么是轮廓? ️答:轮廓是一系列相连的点组成的曲线,代表了物体的基本外形,相对于边缘,轮廓是连续的,边缘并不全部连续. ✏️问:如何寻找轮廓? ️答:寻找轮廓的操作一般 ...

最新文章

  1. grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
  2. Python 解析配置模块之ConfigParser详解
  3. vs2010,vs2012注释快捷键
  4. 购物车的实现(jsp的session+Java的Map的结合)
  5. 能分清直方图和柱状图,你就是图表届的“头号”玩家|图表家族#36
  6. 【嵌入式】Libmodbus之TCP模式Master端程序示例
  7. jmeter自定义并发用户数图形插件介绍
  8. linux将汇编转为机器码,汇编语言 高级语言 机器语言 本地代码
  9. python的序列类型包括哪三类,Python常用的序列类型包括列表、元组和字典三种。...
  10. 图片格式转换大小调整工具_如何轻松快速地将图片转换到JPG/JPEG/PNG/BMP/TIFF
  11. ​选择云服务器的小窍门
  12. HTTP请求头,应答头类型相关问题
  13. 捷信达酒店管理系统密码修改SQL语句
  14. java截取utf8字符串_java中常用的字符串的截取方法
  15. oracle out of bounds,如何通过不具有ArrayIndexOutOfBoundsException的executeBatch获取生成的键?...
  16. 剑指offer :跳台阶
  17. Spring Boot实训开发个人博客9 - 标签管理
  18. mysql got signal 11_轻松解决MYSQL错误mysqld got signal 11 ;
  19. 教程:QuickTime 录屏的同时录制电脑中播放的声音,播放的歌曲等
  20. 【渝粤教育】电大中专中医基础知识 (3)作业 题库

热门文章

  1. 转这个博客了,以前的博客不用了。(技术为主,寒暄为辅)
  2. html 鼠标单击单元格,vue-easytable点击表格中某个单元格操作
  3. php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...
  4. 抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法
  5. Xcode 8 插件安装
  6. (回文串)Manacher算法
  7. Linux rpm 命令参数
  8. 介绍几个好用的android自定义控件
  9. c语言flash里能存文件吗,STM32内部FLASH打包读写
  10. Shell Sort 希尔排序 收藏