opencv测量物体的长度
看代码前须知:
- 需要固定的摄像头来保证拍摄角度一致
- 需要固定的光源来保证受光面的一致
- 需要固定的检测物体来保证适应所设定的阈值(主要 灰度阈值)
- 需要知道一个物体实际的长度与像素之间的比值 方便做参照
- 使用opencv版本 3.4.2.16
图片:
本人的硬盘一张 图片尺寸:1280X960 拍摄软件:MV 所用镜头:大华
代码片段:
import cv2# 众所周知的套路
# 转灰度->二值化->寻找前景->物体轮廓位置->找出轮廓坐标->运用已知比值->测量物体实际尺寸image = cv2.imread('./image/02.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY)
cv2.imshow('image', binary)
binary,contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.RETR_LIST)for cons in contours:Area = cv2.contourArea(cons)if Area > 800000 and Area < 1000000:print('面积:', Area)cv2.drawContours(image, cons, -1, (0, 0, 255), 1)x, y, w, h = cv2.boundingRect(cons)long = float('%.2f' % (w / 109))wide = ('%.2f' % (h / 109))print('坐标:', x, y, w, h)cv2.putText(image, str('long:{}cm wide:{}cm'.format(long, wide)), (x, y), cv2.CHAIN_APPROX_NONE, 2,(0, 255, 0),3)cv2.imshow("img", image)else:continue
cv2.waitKey(0)
运行结果:
二值化图一张
嵌入前景图一张
报错须知:
在cv2.findContours()寻找前景中,可能会出现报错信息
ValueError: not enough values to unpack (expected 3, got 2)
这个是opencv版本问题
opencv2和opencv4中接受的是2个返回值 contours和hierarchy
opencv3中接受的是3个返回值
有人可能会问 啊! 你这109怎么来的!你个大骗子!rnm退钱!!!
桥豆麻袋!!! 打我可以 别!!!打!!!! 脸!!!!!
这个109是根据原像素跟实际的比例测量出来的 109:1 (109个像素点对应1厘米)
这时候又有同学举手问:
博主,这个像素点是怎么确定的?
回答: print打印结果后发现了什么?
坐标分别对应了 x y w h, 分别是左上角点的坐标x,y 和 矩形的宽高w,h就是像素点
宽高都知道了 与实际测量的比值就确定了 接下来不用我多说了吧
实际测量: 长:10.5cm 宽:7.4cm
opencv结论:长:10.57cm 宽:7.36cm
精确不到毫米我也很无奈 要不试试康耐视的软件? 加密狗也就小一万一个
opencv测量物体的长度相关推荐
- OpenCV测量物体的尺寸技能 get~
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 盛年不重来,一日难再晨. 及时当勉 ...
- opencv 通过标定摄像头测量物体大小_解决方案 | 如何用普通手机准确测量物体体积?...
点击上方"计算机视觉life",选择"星标" 快速获得第一手干货 本文授权自机器之心. 最近,菜鸟全球科技挑战赛总决赛落幕.赛题「智能体积测量」关注物流要素「长 ...
- 使用OpenCV测量图像中物体的大小
本文翻译自pyimagesearch技术博客上的一篇文章,<Measuring size of objects in an image with OpenCV>,原文作者:Adrian R ...
- openCV 轮廓查找-测量物体尺寸
一,利用openCV的findContours轮廓查找功能,用已知物体的尺寸(比如硬币)作为参考,根据实际尺寸与像素尺寸的比列,求出图片中物体的实际大小.存在的问题有两个: 图片的阴影导致轮廓不准确, ...
- 基于C++利用OpenCV视觉库进行手掌图像计算机视觉分析测量手指的长度与宽度
资源下载地址:https://download.csdn.net/download/sheziqiong/85620401 实验简介 通过摄像头获得完整的手掌图像,利用OpenCV视觉库进行计算机视觉 ...
- 机器学习水果识别——python+opencv实现物体特征提取
文章目录 一.用python+opencv实现物体特征值提取 1.读取图像.转为灰度图像并降噪 2.获取水果轮廓 将最大轮廓画入最开始的img图像并显示 将小于某一规模的轮廓删除 3.提取水果的面积周 ...
- OpenCV测量视频编码和解码的性能(附完整代码)
OpenCV测量视频编码和解码的性能 OpenCV测量视频编码和解码的性能 OpenCV测量视频编码和解码的性能 #include "opencv2/core/utility.hpp&quo ...
- 工业相机测量仪毛管测量直径与长度值
图像法测量仪采用工业相机远距离拍照和图像处理的测量方式在穿孔机出口测量直径和长度,并根据输入重量和测量尺寸计算钢管壁厚尺寸. 直径相机的布置形式 本方案中,被测毛管外径范围为φ220-450mm,测量 ...
- Video Input with OpenCV and similarity measurement(使用opencv测量两个视频的相似度)
Video Input with OpenCV and similarity measurement(使用opencv测量两个视频的相似度) 参考示例程序及视频文件下载: 一.先决条件 1.两种检查相 ...
最新文章
- C语言 · 分糖果
- 别再说自己不会了!最新高频Java笔试题分享
- win7如何安装mysql5.7_Win7下安装MySQL5.7备忘
- 手绘水彩卡通插画 | 艺术品因有灵魂而珍藏
- [转载]在instagram上面如何利用电脑来上传图片
- java arraystoreexception_java基础面试
- Silverlight的依赖属性与附加属性(六)
- 数据结构考研复试、面试 ——常见提问总结
- js模板引擎template.js的使用
- 苹果 2019 卖什么?新 iPhone 值不值得买?
- 英雄联盟——心得体会
- 如何实现微信小程序的选项卡
- DBMS_SQL的使用
- C语言实现数据结构之归并排序
- 解决C++中调用Python脚本的LNK2001错误
- 精准医学中的深度学习和影像组学
- Cobaltstrike学习(二)beacon命令
- C3P0反序列化链学习
- Vue(3)之 过滤器
- project(2)
热门文章
- 记录我的第一篇博客,【新手向】微信小程序云开发
- 2022.11.13 学习周报
- sona:Spark on Angel大规模分布式机器学习平台介绍
- 太阳能光伏发电整流逆变实训装置,QY-TF01
- 基于51单片机的智能光控路灯设计及设计报告
- 三门问题python 编程_趣味编程:三门问题
- JS实现GPS坐标转化为高德坐标
- ASEMI超快恢复二极管SF58资料
- 128g内存linux开机需要多久,10年时间内存的变换,128MB到128G,价格不但没涨反而越来越低...
- GPS基带P码处理总结——几个关键的说明和重要的参考文献