基于单目的Opencv的线径、像素尺寸、线宽、目标尺寸计算

本文通过Python的Opencv库,详细介绍了如何进行线径、像素尺寸和线宽的精确计算,以达到0.01mm的精度。首先,通过阈值处理图像并找到目标区域,然后利用角点检测筛选有效角点,最后通过扫描线宽确定线的尺寸。整个过程结合了图像处理与数学运算,展示了计算机视觉在尺寸测量中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

想法起源于控制3d打印机初始线径,能够监控平台首层高度是否合理。经过实际测量,不同的高度,精度需求为0.01mm,即程序应该能够区分之分辨率。

```python
%load_ext autoreload
%autoreload 2
import cv2
import os 
import numpy as np
from utils import objectFound
```


```python
imgs = [os.path.join("../images/",x) for x in os.listdir("../images/") if x.find("re")>-1]
imgs
```


    ['../images/1re.jpg', '../images/2re.jpg', '../images/3re.jpg']

## 测量精度
* 单个2cm方块精度: 0.024


```python
img1 = cv2.imread(imgs[1])
img1.shape
```


    (1840, 3264, 3)


```python
gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (9,9), 0)
# _, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
_, thresh = cv2.threshold(blur, 150, 255, 0)
cv2.namedWindow("thresh", cv2.WINDOW_NORMAL)
cv2.imshow("thresh", thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
```


```python
ob = objectFound()
rects = ob.rectangle(img1.copy(), thresh, debug=True, mode='all')    
```


```python
maxrate = 0
roiF = None
for index, rect in enumerate(rects):
    #计算0-255比例, 0要尽可能多
    x,y,w,h = rect
    roi = thresh[y:y+h, x:x+w]
    rate = (np.sum(roi==0)/(roi.shape[0]*roi.shape[1])) + (0.1-index*0.01) #排名奖励
&nb

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值