python opencv检测高光点及findContours计算连通域重心
在对二值化图像的连通域进行分析时,重心,对称轴等参数是重要特征。现对连通域重心计算的python代码实现,归纳总结如下,欢迎大家批评指正。重心是距离对重量的加权平均。用数学语言描述即为:
离散化后为:
对于二值化图像中的连通域,属于均匀物体,每一点像素值相等,所以重心公式如下:
x_i , y_i分别为连通域中像素点的坐标。当然更方便的方法是利用现有的函数接口,代码如下:
import cv2
import numpy as np
from skimage import data,segmentation,measure,morphology,color
import glob
import matplotlib.pyplot as plt
# images = glob.glob("./*.jpg")
images = glob.glob("./inputdata/highlight/*.bmp")
num_img = len(images)
Coord_highlight = np.zeros((4,2,num_img))
CoordInWorld = np.zeros((4,2,num_img))
num_img = 0
for fname in images:img = cv2.imread(fname)img_copy = img.copy()plt.figure()plt.subplot(221)plt.imshow(img[:,:,[2,1,0]]) # plt的图像通道和opencv图像通道相反,前者为rgb,后者则为bgr。plt.title('ori_img')plt.subplot(222)plt.imshow(img_copy[:,:,[2,1,0]])plt.title('ori_img_copy')gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray=cv2.GaussianBlur(gray, (9, 9), 0)kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(8,8))#圆结构元素gray = cv2.erode(gray,kernel,iterations = 1)gray = cv2.dilate(gray,kernel,iterations = 1)retval, thresh = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY)#阈值的选择# method1 利用函数接口contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)for index,c in enumerate(contours):# calculate moments for each contourM = cv2.moments(c)# calculate x,y coordinate of centercX = int(M["m10"] / M["m00"])cY = int(M["m01"] / M["m00"])cv2.circle(img, (cX, cY), 10, (0, 0, 255), -1)print(index,cX,cY)# method2 利用公式计算label_image = measure.label(thresh) #连通区域标记print('##########################')for index,region in enumerate(measure.regionprops(label_image)):points = region.coords #得到的是按列 行cX = int(np.mean(points[:,1])) # 求均值即可cY = int(np.mean(points[:,0]))cv2.circle(img_copy, (cX, cY), 10, (255, 0, 255), -1)print(index,cX,cY)plt.subplot(223)plt.imshow(img[:,:,[2,1,0]])plt.title('post_img')plt.subplot(224)plt.imshow(img_copy)plt.title('post_img_copy')plt.show()cv2.namedWindow('img',0)cv2.imshow('img',img)cv2.namedWindow('img_copy',0)cv2.imshow('img_copy',img_copy)cv2.waitKey(0)
python opencv检测高光点及findContours计算连通域重心相关推荐
- python opencv 检测特定颜色
python opencv 检测特定颜色 import cv2 import numpy as npcap = cv2.VideoCapture(0)# set blue thresh 设置HSV中蓝 ...
- python opencv检测人脸
python opencv检测人脸 文章目录: 一.opencv检测一张图片 二.opencv摄像头实时检测人脸 一.opencv检测一张图片 opencv检测人脸分成三部分: 1.图片转换成灰色(降 ...
- Python+OpenCV检测灯光亮点
本篇博文分享一篇寻找图像中灯光亮点(图像中最亮点)的教程,例如,检测图像中五个灯光的亮点并标记,项目效果如下所示: 第1步:导入并打开原图像,实现代码如下所示: # import the necess ...
- python+OpenCV检测条形码
今天看到一篇关于条形码检测的文章,还是存在一些问题的,昨天我陪朋友去取快递的时候,看到了关于条形码检测在现实场景中的应用,于是,便想着实现一波,并且对程序中的一些问题做了一些修改. 首先要确定调用的包 ...
- 使用Python,OpenCV检测摄像机到标记对象的距离
使用Python,OpenCV检测摄像机到标记对象的距离 1. 效果图 2. 三角形相似性是什么? 3. 三角形相似性检测距离原理 4. 使用Python,OpenCV检测标记对象 5. 源码 参考 ...
- 使用Python和OpenCV检测图像中的条形码
使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...
- 使用Python,OpenCV在视频中进行实时条形码检测
使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...
- 使用Python和OpenCV检测图片上的条形码
这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问题,浏览代码之后,我提供了一些对原始算法的更新和改进. 首先需 ...
- Python+Opencv实现多种形状的检测
目录 一.Hough变换是什么? 二.Hough变换原理简介 三.Hough变换实现步骤 四.Hough变换直线检测代码实现及效果展示 五.Hough变换圆形检测代码实现及效果展示 六.基于Hough ...
最新文章
- 程序员晒元宵节福利,网友:看了我想砸键盘......
- 局部敏感哈希Locality Sensitive Hashing归总
- PHP和MySQL处理树状、分级、无限分类、分层数据的方法
- init/inittab
- nginx只能访问80端口_nginx 访问不了非80端口
- make pycaffe 报错:“fatal error: numpy/arrayobject.h: No such file or directory” 解决方案
- python多个dataframe_python对分组在多个列上的dataframe进行条件和运算
- 定时任务_定时任务Quartz入门
- Linux系统安装三菱编程软件,如何安装三菱plc编程软件gx developer
- 【C语言】malloc,free(),strerror函数
- WebClient发布到IIS后访问共享文件提示用户名或密码错误(已设置凭证)
- 答题系统 html源码,答题系统.html
- Volterra方程的不动点
- 飞控中的IIR二阶滤波器
- 大家都用什么Maven插件?及本人的几个常用插件分享
- android 7.0 2g,LG美国定制机曝光:2GB内存,搭载安卓7.0系统
- CentOS7虚拟机网络设置及使用代理服务器
- 高通骁龙845的android手机有哪些,骁龙845手机有哪些 2018搭载高通骁龙845的手机推荐...
- C# 屏幕取词 鼠标取词 非剪切板模式
- php镶入电脑网页,flash插件来调用pc的摄像头如何将它嵌入到TML页面
热门文章
- Android集成微信分享,由于分享的缩略图大于32K,而无法调起微信客户端
- OAI核心网搭建全过程【1】
- 关于PPC或PDA无法打开文件。可能它不是使用可信证书进行签名的,或找不到它的某个组件
- element 表格 最后一行合计。 合并单元格方法
- 数模E——信号干扰下的超宽带(UWB)精确定位问题
- 【Grasshopper进阶】强制Grasshopper电池输入/输出参数数据结构扁平化 (i.e. Flatten/拍平/展开…)
- C# Socket.Receive()一直为0问题解决
- INFA DAC抽取数据
- 记录2019届秋季校园招聘:VIVO提前批(AI专场)2018.7.13
- 中国铁路机车行业发展态势与投资创新规模建设报告2022版