在OpenCV里图像上的点与轮廓的测试

前面学习轮廓一些函数,接着继续学习图像上一点与轮廓的关系,主要使用cv.pointPolygonTest函数:

dist = cv.pointPolygonTest(cnt,(50,50),True)

这行代码就是表示点(50,50)与轮廓cnt的最近距离。pointPolygonTest函数主要用来判断点与边缘最近的距离,如果第三个参数设置为True,返回数据表示点与边缘的实际距离,负数表示在轮廓外面,正数表示在轮廓内部;如果设置为False,返回值为-1表示在外面,1表示在内部,0表示在边缘上。

演示的例子如下:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import numpy as np
import cv2
from matplotlib import pyplot as plt

#读取图片
img = cv2.imread('star.png')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图片
ret,thresh = cv2.threshold(img_gray, 127, 255,0) #阈值分割
contours,hierarchy = cv2.findContours(thresh,2,1) #查找轮廓
cnt = contours[0] #取得第一个

cv2.drawContours(img,[cnt], -1, [0,255,0])

for i in range(10):
    pt1 = (30*i,30*i)
    cv2.circle(img,pt1,5,[0,0,255],-1) #画圆
    dist = cv2.pointPolygonTest(cnt,pt1,True)

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览

应支付9.90元
点击重新获取
扫码支付

支付成功即可阅读