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

土特产直营建设网站的调研随机置顶wordpress

土特产直营建设网站的调研,随机置顶wordpress,关于建立网站的申请,网站关键词快速排名工具目录 一、图像拼接 1、直接看案例 图1与图2展示#xff1a; 合并完结果#xff1a; 2、什么是图像拼接 3、图像拼接步骤 1#xff09;加载图像 2#xff09;特征点检测与描述 3#xff09;特征点匹配 4#xff09;图像配准 5#xff09;图像变换和拼接 6 合并完结果 2、什么是图像拼接 3、图像拼接步骤 1加载图像 2特征点检测与描述 3特征点匹配 4图像配准 5图像变换和拼接 6图像调整 二、案例实现 1、定义函数返回图像的关键点和描述符 2、定义展示图像函数 3、计算读入图像的特征点和描述符 调试模式状态下 kps对应值 des对应值 4、建立暴力匹配器和K近邻算法 1关于BFMatcher暴力匹配 2暴力匹配的K近邻 用法 参数解析 返回值 3续接上文代码 运行结果 调试模式rawMatches内容 5、绘制匹配结果 运行结果 6、计算视角变换矩阵 调试模式下 kps_floatA与kps_floatB状态 matches状态 7、透视变换后拼接 运行结果 8、完整代码 一、图像拼接 1、直接看案例 图1与图2展示 合并完结果 2、什么是图像拼接 图像拼接是指将多个图像拼接成一个大图像。在计算机视觉和图像处理领域图像拼接常用于创建全景图像、创建大幅面照片、图像拼接等应用。 3、图像拼接步骤 1加载图像 使用OpenCV的cv::imread函数加载需要拼接的多个图像。 2特征点检测与描述 使用特征提取算法如SIFT、ORB等检测图像中的特征点并计算每个特征点的描述符。 3特征点匹配 使用特征匹配算法如KNN匹配来找到两个图像间的对应关系。常见的方法有基于距离的匹配如欧氏距离、汉明距离等和基于相似性度量的匹配如比率测试。 4图像配准 根据特征点的匹配结果使用配准算法如RANSAC估计两个图像间的变换矩阵。常见的变换矩阵包括仿射变换、透视变换等。 5图像变换和拼接 使用估计得到的变换矩阵将需要拼接的图像进行变换并将它们拼接在一起。可以使用OpenCV的cv::warpPerspective函数或cv::warpAffine函数来实现变换和拼接。 6图像调整 对拼接后的图像进行调整使得拼接边缘平滑过渡消除拼接处的不连续性。常见的方法包括图像融合、图像平滑等。 二、案例实现 1、定义函数返回图像的关键点和描述符 import cv2 import numpy as np import sysdef detectAndDescribe(image): # 函数用于gray cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # 将影色园片转换成死没图descriptor cv2.SIFT_create() # 建立SIFT生成器(kps,des) descriptor.detectAndCompute(gray,None) # 读入参数为灰度图和可选参数掩膜检测关键点及描述符,返回关键点列表和关键点对应的描述符列表,每个描述符都是一个向量描述关键点周围图像内容# 此处kps是元组类型des是ndarry矩阵类型# 将关键点列表的结果转换战NumPy数组kps_float np.float32([kp.pt for kp in kps])# kp.pt 包含两个值分别是关键点在图像中的 x 和 y 坐标。这些坐标通常是浮点数可以精确的捕述关键点在图像中的位置return (kps,kps_float,des) # 返回特征点集及对应的描述特征 2、定义展示图像函数 def cv_show(name,img): # 函数用于展示图片cv2.imshow(name,img)cv2.waitKey(0) 3、计算读入图像的特征点和描述符 读取拼接图片 imageA cv2.imread(1.jpg) cv_show(imageA,imageA) imageB cv2.imread(2.jpg) cv_show(imageB,imageB)计算图片特征点及描述符 (kpsA,kps_floatA,desA) detectAndDescribe(imageA) (kpsB,kps_floatB,desB) detectAndDescribe(imageB) 调试模式状态下 kps对应值 des对应值 4、建立暴力匹配器和K近邻算法 1关于BFMatcher暴力匹配 在图像处理中特征点匹配是指在不同图像中找到对应的特征点。BFMatcher可用于在两个特征向量集合中计算最佳匹配。它通过计算两个特征向量的相似度如欧氏距离、汉明距离等并选择最近邻的特征点作为匹配点。 2暴力匹配的K近邻 用法 使用KNN检测来自A、B图的SIFT特征匹配对 # knnMatch(gueryDescriptors, trainDescriptors, k, maskNone, compactResultNone) 参数解析 queryDescriptors匹配图像A的描述符 trainDescriptors匹配图像B的描述符 K最佳匹配的描述符个数一般K2 mask 可选参数一个掩码数组用于过滤不需要匹配的特征点。默认为None表示不使用掩码。 compactResult 可选参数一个布尔值指定是否返回紧凑的匹配结果。默认为None表示根据特征描述符的类型自动选择。 返回值 distance匹配的特征点描述符的欧式距离数值越小也就说明俩个特征点越相近 queryIdx测试图像的特征点描述符的下标(第几个特征点描述符)同时也是描述符对应特征点的下标。 trainIdx样本图像的特征点描述符下标同时也是描述符对应特征点的下标。 3续接上文代码 matcher cv2.BFMatcher() rawMatches matcher.knnMatch(desB,desA,2) # 对desB中的每个描述符在desA中查找两个最近邻 good [] # 设置空列表用于存放匹配成功的特征点 matches [] # 用于存放匹配成功的两个点的索引值 for m in rawMatches:# 当最近距离跟次近距离的比值小于0.65值时保留此匹配对if len(m) 2 and m[0].distance 0.65 * m[1].distance: # len(m) 2 表示检查是否有两个匹配项# m[0].distance 0.65 * m[1].distance表示判断匹配的两个点最近邻和次近邻的比值是否小于0.65good.append(m)# 存储两个点在featuresAfeaturesB中的索引值matches.append((m[0].trainIdx, m[0].queryIdx)) print(len(good)) # 返回匹配成功的特征点个数 print(matches) # 打印匹配成功点的索引 运行结果 调试模式rawMatches内容 5、绘制匹配结果 # 绘制两组关键点的匹配结果输入参数为B图原图B图的关键点列表A图原图A图的关键点列表匹配成功的点的坐标掩码图像默认为None # flag 表示绘制的标志cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS表示在关键点周围绘制圆圈圆圈大小与关键点尺度成比例 vis cv2.drawMatchesKnn(imageB,kpsB,imageA,kpsA,good,None,flags cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv_show(keypoint matches,vis) 运行结果 6、计算视角变换矩阵 透视变换 if len(matches) 4 : # 当前筛选后的匹配对大于4.计算视角变换矩阵# 分别获取匹配成功的A图中点的坐标与B图中点的坐标ptsA np.float32([kps_floatA[i] for (i,_) in matches]) # kps_floatA是匹配成功点的坐标matches是通过阈值筛选之后的特征点对象其中存放匹配成功点的索引ptsB np.float32([kps_floatB[i] for (_,i) in matches]) # kps_floatB是图片B中的全就特征点坐标(H, mask) cv2.findHomography(ptsB, ptsA, cv2.RANSAC, 10) else:print(图片未找到4个以上的匹配点)sys.exit() 调试模式下 kps_floatA与kps_floatB状态 matches状态 7、透视变换后拼接 # 根据视角变换矩阵H将原图B进行透视变换然后将变换后的图片与A进行拼接 result cv2.warpPerspective(imageB,H,(imageB.shape[1] imageA.shape[1],imageB.shape[0])) cv_show(resultB,result) # 将图片A传入result图片最左端 result[0:imageA.shape[0],0:imageA.shape[1]] imageA cv_show(result,result) 运行结果 8、完整代码 import cv2 import numpy as np import sys def cv_show(name,img): cv2.imshow(name,img)cv2.waitKey(0)def detectAndDescribe(image): gray cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) descriptor cv2.SIFT_create() (kps,des) descriptor.detectAndCompute(gray,None) return (kps,kps_float,des) imageA cv2.imread(1.jpg) cv_show(imageA,imageA) imageB cv2.imread(2.jpg) cv_show(imageB,imageB)(kpsA,kps_floatA,desA) detectAndDescribe(imageA) (kpsB,kps_floatB,desB) detectAndDescribe(imageB)rawMatches matcher.knnMatch(desB,desA,2) good [] matches [] for m in rawMatches:if len(m) 2 and m[0].distance 0.65 * m[1].distance: good.append(m)matches.append((m[0].trainIdx, m[0].queryIdx)) print(len(good)) # 返回匹配成功的特征点个数 print(matches) # 打印匹配成功点的索引vis cv2.drawMatchesKnn(imageB,kpsB,imageA,kpsA,good,None,flags cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv_show(keypoint matches,vis)if len(matches) 4 : ptsA np.float32([kps_floatA[i] for (i,_) in matches]) ptsB np.float32([kps_floatB[i] for (_,i) in matches]) (H, mask) cv2.findHomography(ptsB, ptsA, cv2.RANSAC, 10) else:print(图片未找到4个以上的匹配点)sys.exit() # 退出匹配result cv2.warpPerspective(imageB,H,(imageB.shape[1] imageA.shape[1],imageB.shape[0])) cv_show(resultB,result) result[0:imageA.shape[0],0:imageA.shape[1]] imageA cv_show(result,result)
http://www.hkea.cn/news/14554727/

相关文章:

  • 关于营销方面的网站青岛seo招聘
  • 网站中加入百度地图金融行业
  • 网站打包成app软件怎样做自媒体拍视频赚钱
  • 短租房网站哪家做最好创意设计绘画作品
  • 广州建设网站开发黄页号码怎么查
  • 郑州做网站hnqfu百度网络推广营销
  • 关于网站seo优化九江建设局网站
  • 网站建设分哪些类别昌平手机网站建设
  • 室内设计网站都有哪些公司电商网站开发工作室
  • 网站建设管理属于职业资格吗网页设计与网站建设完全教程
  • 想开网站建设公司泰州做网站的
  • 装修网站建设方案书食品 骏域网站建设专家
  • 最新新闻热点事件2022年8月整站seo优化推广
  • 黔东南网站开发gzklyy网业大全
  • 做药公司的网站前置审批彩票网站net网站开发
  • 之前做的网站说要升级wordpress 新建模板文件夹
  • 网页制作创建站点电商网站及企业微信订烟
  • 保定投递网站建设网站建设在线视频
  • 广西新宇建设项目有限公司网站浙江手机网站建设
  • 如何免费做网站的教程站长工具是什么
  • 如何建设社区网站阿里云注册网站之后怎么做网站
  • 佛山电商网站制作北京专业网站建设公司排名
  • 建立网站培训讲义网站备案 多ip
  • 小说投稿赚钱的网站直播带货系统
  • 哪些网站可以发广告免费制作模卡app的软件
  • 嵊州网站小程序localstorage
  • 二手书网站开发需求分析深圳便宜的网站建设
  • 网站建设与网络营销的关系企业网站优化要多少钱
  • 我的世界怎么做的好看视频网站如何把文件保存在wordpress
  • 深圳手机商城网站设计价格学校网站的建立