基于opencv识别的相机内参重投影的学习报告

一、介绍

        本文由同组孙琪对标定的金属板的小孔进行图像处理;以及学习杨师兄的误差重投影函数的学习与应用,使像素坐标对物理坐标的转换,目前只是实现这一功能,后续根据需要可以添加自己相机的环境,对代码进行修改调用。

二、背景

        主要是多轴孔装配的一部分精度的评估,可以知道内参标定的误差,再者往后写论文时可以使用,如下是我们需要识别的照片:

        因为在多孔装配中,难度大,装配复杂性高,需要准确识别小点和对相机的误差进行校准和估算,因此做此工作。

三、图像处理小孔的学习

        此处理为同组孙琪所做,我只负责讲解与调用。首先进行基本操作,对图像进行简单的处理(基本处理+灰度处理+边缘检测+闭运算+圆形的检测+定义后面识别到圆小孔的坐标保存的位置),其中圆形检测、边缘检测等识别的参数需要自己去调。

# 图像缩小与灰度处理
width = int(src.shape[1] / 3)
height = int(src.shape[0] / 3)
dim = (width, height)
resized = cv2.resize(src, dim)
gray_image = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
img_blur = cv2.GaussianBlur(gray_image, (5, 5), 0)

# Canny 边缘检测
edges = cv2.Canny(img_blur, 100, 200)
# cv2.imshow("Edges", edges)

# 闭运算操作
kernel = np.ones((5, 5), np.uint8)
closed_edges = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel)
# cv2.imshow("Closed Edges", closed_edges)

# 检测圆形
circles = cv2.HoughCircles(closed_edges, cv2.HOUGH_GRADIENT, dp=1.2, minDist=1, param1=5, param2=5, minRadius=3,
                           maxRadius=4)
# 定义保存的文件路径
output_file2 = "config/zuobiao.txt"

        然后就要在图像上对圆孔的中心点进行像素坐标提取,其中,需要设定一个坐标原点和x,y方向,使得每个小孔的位置相对于坐标原点有一个相对的坐标,然后就能获取每个小孔相对我们设定的坐标原点的一个像素坐标,将我们识别的像素坐标写入我们上面定义的config文件里,以方便后续转换成物理坐标的调用。下面是部分代码,主要是实现识别板子的四个角点以及将计算的坐标保存的代码(排序什么的代码就不展示了,只展示关键处理的代码):

min_x_y_corner = min(corners, key=lambda p: (p[0] + p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值