Python机器视觉(3)——特征描述与图像配准

        Points.append([x,y])              #添加点位坐标
cv2.namedWindow('img', cv2.WINDOW_AUTOSIZE)
cv2.setMouseCallback('img', on_mouse)           #调用鼠标函数
while True:
    cv2.imshow('img', img)
    # 按 q 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break
return np.float32(Points)                 #转为numpy数组格式,方便科学计算

def calculate_perspective_matrix(originPoints, targetPoints):
# 构建线性方程组 Ax = b
A = []
b = []
for i in range(4): #一共有四组点,依次赋值
x_origin, y_origin = originPoints[i]
x_target, y_target = targetPoints[i]
A.append([x_origin, y_origin, 1, 0, 0, 0, -x_targetx_origin, -x_targety_origin])
A.append([0, 0, 0, x_origin, y_origin, 1, -y_targetx_origin, -y_targety_origin])
b.append(x_target)
b.append(y_target)

A = np.array(A)
b = np.array(b)
'&#
  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于特征的图像配准是一种常用的图像处理技术,可以将两幅图像进行对齐,使它们在空间上重合。Python中有多种库可以实现基于特征的图像配准,比如OpenCV和scikit-image等。 其中,OpenCV提供了cv2.findHomography()函数来计算两幅图像之间的单应性矩阵,从而实现图像配准。具体步骤如下: 1. 读入两幅待配准的图像 2. 提取两幅图像的特征点,可以使用SIFT、SURF、ORB等算法 3. 匹配两幅图像的特征点,可以使用FLANN或暴力匹配算法 4. 根据匹配的特征点计算单应性矩阵 5. 将待配准的图像进行透视变换,使其与参考图像重合 下面是一个基于OpenCV实现基于特征的图像配准的示例代码: ```python import cv2 # 读入两幅待配准的图像 img1 = cv2.imread('img1.jpg') img2 = cv2.imread('img2.jpg') # 提取两幅图像的特征点 sift = cv2.xfeatures2d.SIFT_create() kp1, des1 = sift.detectAndCompute(img1, None) kp2, des2 = sift.detectAndCompute(img2, None) # 匹配两幅图像的特征点 bf = cv2.BFMatcher() matches = bf.knnMatch(des1, des2, k=2) # 根据匹配的特征点计算单应性矩阵 good_matches = [] for m, n in matches: if m.distance < 0.75 * n.distance: good_matches.append(m) src_pts = np.float32([kp1[m.queryIdx].pt for m in good_matches]).reshape(-1, 1, 2) dst_pts = np.float32([kp2[m.trainIdx].pt for m in good_matches]).reshape(-1, 1, 2) M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0) # 将待配准的图像进行透视变换,使其与参考图像重合 result = cv2.warpPerspective(img1, M, (img2.shape[1], img2.shape[0])) # 显示结果 cv2.imshow('result', result) cv2.waitKey(0) cv2.destroyAllWindows() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值