当前位置: 首页 > news >正文

如何做跨境电商宁波seo整体优化

如何做跨境电商,宁波seo整体优化,wordpress cform,网站着陆页 推荐OpenCV ORB角点检测匹配和偏移计算 1. 简介2. ORB角点检测匹配和偏移计算2.1. 创建平移图片2.2. ORB角点检测2.3. ORB角点匹配2.4. 计算变换矩阵 1. 简介 首先通过 cv2.ORB_create 创建ORB检测器 orb, 然后通过 orb.detectAndCompute 检测两张图片获得ORB角点&…

OpenCV ORB角点检测匹配和偏移计算

  • 1. 简介
  • 2. ORB角点检测匹配和偏移计算
    • 2.1. 创建平移图片
    • 2.2. ORB角点检测
    • 2.3. ORB角点匹配
    • 2.4. 计算变换矩阵


1. 简介

首先通过 cv2.ORB_create 创建ORB检测器 orb
然后通过 orb.detectAndCompute 检测两张图片获得ORB角点,
接着通过匹配器 cv2.BFMatcher 进行配对,
最后通过 cv2.findHomography 计算变换矩阵。


2. ORB角点检测匹配和偏移计算


2.1. 创建平移图片

首先我们先创建一个平移图片作为两个比较的图片

from cv2 import cv2
import numpy as np# 读取图片文件
demo_file_path = 'img1.png'
img = cv2.imdecode(np.fromfile(demo_file_path, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
cv2.imshow('origin img', img)# 平移变量
T_x, T_y = 10, 20# 旋转变量 0°
angles = 0
sin_phi, cos_phi = np.sin(np.radians(angles)), np.cos(np.radians(angles))# 构造仿射变换矩阵H 2*3
H = np.float32([[cos_phi, -sin_phi, T_x],[sin_phi, cos_phi, T_y]])
np.set_printoptions(suppress=True)
print(H)# 仿射变换
new_img = cv2.warpAffine(img, H, (img.shape[1], img.shape[0]))# 保存图片
cv2.imencode('.png', new_img)[1].tofile('img2.png')
cv2.imshow('new img', new_img)
cv2.waitKey(0)

平移x轴10个像素点,y轴20个像素点,其他不变,如下图所示:

在这里插入图片描述
仿射变换矩阵 H H H,这里纯平移,所以也是就平移矩阵,如下:

[[ 1. -0. 10.][ 0.  1. 20.]]

关于透视变换参考:《OpenCV 透视变换》


2.2. ORB角点检测

import cv2
import numpy as np# 读取两个连续图像
img1 = cv2.imread('img1.png')
img2 = cv2.imread('img2.png')# 初始化ORB检测器
orb = cv2.ORB_create(nfeatures=500)# 检测关键点和描述符
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)# 显示ORB角点
keypoints_img1 = cv2.drawKeypoints(img1, kp1, None, color=(0,255,0), flags=0)
keypoints_img2 = cv2.drawKeypoints(img2, kp2, None, color=(0,255,0), flags=0)
cv2.imshow('Keypoints Image1', keypoints_img1)
cv2.imshow('Keypoints Image2', keypoints_img2)

首先通过 cv2.ORB_create 创建ORB检测器 orb
然后通过 orb.detectAndCompute 检测两张图片获得ORB角点
然后通过 cv2.drawKeypoints 将角点可视化,如下图:

在这里插入图片描述


2.3. ORB角点匹配

# 创建匹配器
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)# 根据匹配结果排序,取较优的50个
matches = sorted(matches, key = lambda x:x.distance)[:50]# 显示匹配关系
matches_img = cv2.drawMatches(img1, kp1, img2, kp2, matches, None, flags=2)
cv2.imshow('Matches Image', matches_img)

通过 cv2.BFMatcher 创建匹配器,其中有两个参数:

  1. normType:它指定要使用的距离量度。
    默认是 cv2.NORM_L2,对于SIFT,SURF 效果较佳
    对于二进制字符串的描述子,比如ORB,BRIEF,BRISK等,应该用cv2.NORM_HAMMING(汉明距离度量)
    使用,如果ORB检测器的 WTA_K 设置 3或者4,应该用cv2.NORM_HAMMING2

  2. crossCheck:匹配器为每个查询描述符找到 k 个距离最近的匹配描述符;
    默认为 False,为 True 时,只返回满足交叉验证条件的匹配结果。

在这里插入图片描述


2.4. 计算变换矩阵

# 提取匹配点
src_pts = np.float32([kp1[m.queryIdx].pt for m in matches]).reshape(-1,1,2)
dst_pts = np.float32([kp2[m.trainIdx].pt for m in matches]).reshape(-1,1,2)# 计算变换矩阵
H, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)
matchesMask = mask.ravel().tolist()  # 可用于cv2.drawMatches可视化匹配关系的掩模
np.set_printoptions(suppress=True)
print(H)# 可视化变换结果
offset_img = cv2.warpPerspective(img1, H, (img1.shape[1], img1.shape[0]))
cv2.imshow('Offset Image', offset_img)cv2.waitKey(0)
cv2.destroyAllWindows()

提取匹配点两个图片的src_ptsdst_pts,通过 cv2.findHomography 计算变换矩阵
可以看到计算出来的透视变换矩阵可以看到结果为x轴平移,与实际一致

[[ 1.  0. 10.][-0.  1. 20.][-0.  0.  1.]]

那么,显示变换结果也将一致,如下图:

在这里插入图片描述


谢谢

http://www.mmbaike.com/news/77894.html

相关文章:

  • 做导购网站用什么样的主机别做网络推广员
  • 维护一个网站的费用免费注册网站有哪些
  • 百度seo优化关键词seo网站优化技术
  • 访问国外网站太慢深圳市企业网站seo营销工具
  • 如何做本地门户网站温州百度推广公司电话
  • 方案计划网站seo营销网站
  • 网站关键词库怎么做广告代理公司
  • 江苏安宜建设工程有限公司网站免费推广自己的网站
  • 德州建设街小学网站百度一下首页登录入口
  • 自建国际网站做电商windows优化大师电脑版
  • 网站开发 语言网站推广服务
  • 凡科网站建设价格百度关键词排名联系
  • 网站建设公司厂南宁seo推广服务
  • 厦门网站设计公司排名网站建站流程
  • 外贸网站推荐广告平台推广渠道
  • 烟台网站设计神马推广
  • wordpress产品详情相册成都谷歌seo
  • 网站建设管理与维护贵州二级站seo整站优化排名
  • 网站备案去哪找接入商seo优化或网站编辑
  • 做ic销售的各种网站网站软件开发
  • wordpress怎么让网页支持多国语言企业关键词优化推荐
  • 网站设计论坛免费加客源软件
  • 有服务器自己怎么做网站市场营销公司有哪些
  • 建设银行网站怎么看不见余额推销一个产品的方案
  • 小程序wordpress视频专业北京seo公司
  • 西安 网站建设外包百度seo报价
  • 天台县城市建设规划局网站建立网站的基本流程
  • 新手销售怎么和客户交流百度软件优化排名
  • 网站怎么做免费seo搜索引擎乐陵市seo关键词优化
  • 河源正规网站建设价格网站广告投放收费标准