python 机器视觉测量_用Opencv python实现精密测量
实际上,我正在使用OpenCV和Python开发一个机器视觉项目。
目标:项目的目标是以高精度测量组件的尺寸。
主要硬件:巴斯勒5MP照相机(aca-2500-14gm)
一个红色背光灯(100毫米x 100毫米)(我的组件大小约为60毫米)
实验
因为我正在考虑非常严格的公差限制,所以我首先做了一个精确的研究。我把组件放在背光源上,在不移动部件的情况下拍摄了100张图像(想象一下100帧的视频)。我测量了所有100幅图像的外径。我的毫米/像素比是0.042。我测量了测量的标准偏差,以确定精度,结果是0.03mm,这是不好的。组件和设置都没有接触,因此我希望精度为0.005mm。但我的损失是一个数量级的。我使用OpenCV的Hough圆来计算组件的OD。
代码:import sys
import pickle
import cv2
import matplotlib.pyplot as plt
import glob
import os
import numpy as np
import pandas as pd
def find_circles(image,dp=1.7,minDist=100,param1=50,param2=50,minRadius=0,maxRadius=0):
""" finds the center of circular objects in image using hough circle transform
Keyword arguments
image -- uint8: numpy ndarray of a single image (no default).
dp -- Inverse ratio of the accumulator resolution to the image resolution (default 1.7).
minDist -- Minimum distance in pixel distance between the centers of the detected circles (default 100).
param1 -- First method-specific parameter (default = 50).
param2 -- Second method-specific parameter (default = 50).
minRadius -- Minimum circle radius in pixel distance (default = 0).
maxRadius -- Maximum circle radius in pixel distance (default = 0).
Output
center -- tuple: (x,y).
radius -- int : radius.
ERROR if circle is not detected. returns(-1) in this case
"""
circles=cv2.HoughCircles(image,
cv2.HOUGH_GRADIENT,
dp = dp,
minDist = minDist,
param1=param1,
param2=param2,
minRadius=minRadius,
maxRadius=maxRadius)
if circles is not None:
circles = circles.reshape(circles.shape[1],circles.shape[2])
return(circles)
else:
raise ValueError("ERROR!!!!!! circle not detected try tweaking the parameters or the min and max radius")
def find_od(image_path_list):
image_path_list.sort()
print(len(image_path_list))
result_df = pd.DataFrame(columns=["component_name","measured_dia_pixels","center_in_pixels"])
for i,name in enumerate(image_path_list):
img = cv2.imread(name,0) # read the image in grayscale
ret,thresh_img = cv2.threshold(img, 50, 255, cv2.THRESH_BINARY_INV)
thresh_img = cv2.bilateralFilter(thresh_img,5,91,91) #smoothing
edges = cv2.Canny(thresh_img,100,200)
circles = find_circles(edges,dp=1.7,minDist=100,param1=50,param2=30,minRadius=685,maxRadius=700)
circles = np.squeeze(circles)
result_df.loc[i] = os.path.basename(name),circles[2]*2,(circles[0],circles[1])
result_df.sort_values("component_name",inplace=True)
result_df.reset_index(drop=True,inplace=True)
return(result_df)
df = find_od(glob.glob("./images/*"))
mean_d = df.measured_dia_pixels.mean()
std_deviation = np.sqrt(np.mean(np.square([abs(x-mean_d) for x in df.measured_dia_pixels])))
mm_per_pixel = 0.042
print(std_deviation * mm_per_pixel)
输出:0.024
组件的图像:
由于图像是在不干扰设置的情况下拍摄的,我预计测量的重复性大约为0.005mm(5微米)(对于100个图像),但事实并非如此。这是hough圆的问题吗?或者我在这里遗漏了什么
python 机器视觉测量_用Opencv python实现精密测量相关推荐
- opencv和python的区别_所有这些OpenCV Python接口之间有何不同?
拉风的咖菲猫 OpenCV正式发布了两种类型的Python接口,cv和cv2.简历:我开始工作cv.这样,所有OpenCV数据类型都将保留下来.例如,加载时,图像的格式cvMat与C ++中的相同.对 ...
- python笔记图片_图像 opencv - python笔记
默认 基础变换 模糊 锐化 色彩分层 傅里叶变换 高通低通 图像序列转换为视频 人脸识别 import opencv as cv2 img = cv2.imread('test.jpg') # imw ...
- python凹多边形分割_使用Opencv python从Image中裁剪凹面多边形
Steps find region using the poly points create mask using the poly points do mask op to crop add whi ...
- python布尔表达式模板_使用OpenCV python从手绘逻辑门图中生成布尔表达式
您的项目看起来很酷,所以我花了一些时间寻找解决方案.我在下面的代码.代码的结果是: OUTPUT[XNOR[NOR[AND[B,A],OR[D,C]],XOR[NOT[G],NAND[E,F]]]] ...
- python opencv显示图片一闪而过_解决Opencv+Python cv2.imshow闪退问题
Opencv+Python cv2.imshow闪退 # 读入原始图像 origineImage = cv2.imread('./pic/6.jpeg') # 图像灰度化 # image = cv2. ...
- python len函数_知识清单Python必备的69个函数,你掌握了吗?
本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...
- ocr python opencv_如何使用(opencv/python)来实现OCR处
今天我们来介绍一下如何使用(opencv/python)来实现OCR处理银行票据.文末有代码和相关文档下载! 在第一部分中,我们将讨论两个主题: 1.首先,我们将了解MICR E-13B字体,美国,英 ...
- python优化网站_[练习] 用PYTHON来优化网站中的图片
我到公司以来,第一次加班,哇,加一晚上加一上午,现在还没下班的迹象,555,困. 对于网站中的一些关键的页面,多重缓存.静态化.程序代码优化--之外,为了提高用户打开页面的速度,图片是必须要优化的. ...
- python递归函数例题_递归案例python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而对应的中文翻译 "递归" 却表达了两个意思:"递 ...
- 网易图灵学院python公开课_图灵学院 Python全系列教程全栈工程师 python视频教程下载...
大家怎么说? 老师很好,我认为,若想学好python,应该多练.多想.多看.学习资料不能仅限于老师给定的这些内容,这些毕竟是入门资料 老师讲的真不错,对于我们这种小白来说 也比较容易懂,虽然有些时候自 ...
最新文章
- linux内存布局及页面映射
- c语言选择题库和解系,OC单个对象归档和解档关键类和方法名
- 大数据面试题及答案 100道 (2021最新版)
- dataframe如何理解df[df[‘type‘]==‘xType‘]
- php拆分jsion_PHP拆分YAPI导出的swagjson文件
- python中from import用法_python学习--Python之import与from...import的区别与用法
- arcgis中字段计算器利用python比较大小
- 我对 OneData 数据中台体系架构的一些思考
- jenkins支持PHP,jenkins发布php代码
- 再见,Python!骨灰级程序员:用对这个方法,编程能力暴增!
- 面向对象7:项目二的总结
- 鸿鹄系统和鸿蒙系统电脑,荣耀智慧屏发布:首发鸿鹄818处理器及鸿蒙系统,定价3799元起...
- 大数运算——模加减运算
- 如何批量等比例缩放图片尺寸?
- wifi和wlan有什么区别
- 打包报错:Unable to find a single main class from the following candidates
- 青岛科技大学古典音乐考试需要的资料
- 如何在线判断一个文件是否安全? 在线沙箱 / 文件分析系统 / 在线查毒 / 云运行截图
- Masked GCN论文解读
- 计算机没有显示远程桌面连接,连接远程桌面时出现:“这台计算机没有远程桌面客户端访问许可”,怎么处理?...
热门文章
- 征服面试官的50道Redis高频通关面试题
- 所有图片类型后缀汇总
- python图标变成了白色_桌面图标上有个白色文件图标怎么去掉?解决桌面图标白色方块挡住...
- wpf后台设置颜色(背景色,前景色)
- IDEA - 官方定制主题,Dark Purple theme,Cyan Light Theme,Gray Theme
- 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
- 【coq】函数语言设计 练习题inductionlists 总结
- python自然语言处理实战源代码下载_NLP学习:涂铭《Python自然语言处理实战核心技术与算法》PDF+源代码...
- 交换游戏(记忆化搜索,状态压缩,位运算)
- ESP8266-Arduino杀手?