Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCV透视不适用于单应性_Python_Opencv_Homography - Fatal编程技术网

Python OpenCV透视不适用于单应性

Python OpenCV透视不适用于单应性,python,opencv,homography,Python,Opencv,Homography,我尝试使用OpenCV 3,特别是SIFT功能、findHomography和warpPerspective,以便在较大的image2中找到image1,然后对image2进行透视变换,使其几乎与image1相等 代码如下: 将numpy作为np导入 进口cv2 从matplotlib导入pyplot作为plt 最小匹配计数=10 img1=cv2.imread'box.png',0查询图像 img2=cv2.imread'box\u in_scene.png',0 trainImage 启动筛

我尝试使用OpenCV 3,特别是SIFT功能、findHomography和warpPerspective,以便在较大的image2中找到image1,然后对image2进行透视变换,使其几乎与image1相等

代码如下:

将numpy作为np导入 进口cv2 从matplotlib导入pyplot作为plt 最小匹配计数=10 img1=cv2.imread'box.png',0查询图像 img2=cv2.imread'box\u in_scene.png',0 trainImage 启动筛分检测器 检测器=cv2.X特征2d.SIFT\u创建 使用SIFT查找关键点和描述符 kp1,des1=检测器.detectAndComputeimg1,无 printImage 1:kps:{},描述符:{}.formatlenkp1,des1.shape kp2,des2=检测器。检测和计算MG2,无 printImage 2:kps:{},描述符:{}.formatlenkp2,des2.shape 法兰索引KDTREE=0 索引参数=dictalgorithm=FLANN\u索引树,树=5 搜索参数=dictchecks=50 flann=cv2.FlannBasedMatcherindex参数,搜索参数 匹配=flann.knnMatchdes1,des2,k=2 根据Lowe比率测试存储所有良好匹配项。 好的=[] 对于匹配中的m,n: 如果m.距离<0.7*n.距离: 好的,先生 如果长度>最小匹配计数: src_pts=np.float32[kp1[m.queryIdx].pt表示m处于良好状态。重塑-1,1,2 dst_pts=np.float32[kp2[m.trainIdx]。m的pt处于良好状态。重塑-1,1,2 M、 掩码=cv2.findHomographysrc_pts,dst_pts,cv2.RANSAC,5.0 其他: 打印未找到足够的匹配-%d/%d%lengood,最小匹配计数 im_out=cv2.warp透视img2,M,img1.形状[1]*2,img1.形状[0]*2 plt.imshowim_out plt.imshowimg2 节目 生成的图像只是轻微扭曲,但不足以匹配img1

下面是匹配结果和扭曲结果


我解决了这个问题。我做单应性的方向不对。应该是:

    M, mask = cv2.findHomography(dst_pts, src_pts, cv2.RANSAC, 5.0)
而不是:

    M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)