PythonのOpenCVを使用して2つの画像で同様の詳細を検出するPythonプログラムを作成しようとしています。私は2つの画像を持っており、それらは現在のディレクトリにあり、存在しています(6-17行目のコードを参照)。しかし、私はそれを実行しようとすると、次のエラーが表示されます。ここで Python OpenCVエラー: "TypeError:画像データをfloatに変換できません"
import numpy as np
import matplotlib.pyplot as plt
import cv2
import os
path1 = "WIN_20171207_13_51_33_Pro.jpg"
path2 = "WIN_20171207_13_51_43_Pro.jpg"
if os.path.isfile(path1):
img1 = cv2.imread('WIN_20171207_13_51_33_Pro.jpeg',0)
else:
print ("The file " + path1 + " does not exist.")
if os.path.isfile(path2):
img2 = cv2.imread('WIN_20171207_13_51_43_Pro.jpeg',0)
else:
print ("The file " + path2 + " does not exist.")
orb = cv2.ORB_create()
kpl1, des1 = orb.detectAndCompute(img1,None)
kpl2, des2 = orb.detectAndCompute(img2,None)
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)
matches = sorted(matches, key=lambda x:x.distance)
img3 = cv2.drawMatches(img1,kpl1,img2,kpl2,matches[:10],None, flags=2)
plt.imshow (img3)
plt.show()
は
Traceback (most recent call last):
File "C:\Users\jweir\source\repos\BruteForceFeatureDetection\BruteForceFeatureDetection\BruteForceFeatureDetection.py", line 31, in <module>
plt.imshow (img3)
File "C:\Program Files\Python36\lib\site-packages\matplotlib\pyplot.py", line 3080, in imshow
**kwargs)
File "C:\Program Files\Python36\lib\site-packages\matplotlib\__init__.py", line 1710, in inner
return func(ax, *args, **kwargs)
File "C:\Program Files\Python36\lib\site-packages\matplotlib\axes\_axes.py", line 5194, in imshow
im.set_data(X)
File "C:\Program Files\Python36\lib\site-packages\matplotlib\image.py", line 600, in set_data
raise TypeError("Image data cannot be converted to float")
TypeError: Image data cannot be converted to float
は、誰かが、なぜ私はそれが何を意味するのか、このエラーを取得しています私にexplpain、そしてどのようにしてくださいすることができます...私は得ることに保つエラーです修理する。
私はあなたのエラーを再現できないので、原因と思われる私の答えを削除しました。 'isfile(path1)'をチェックして、実際に 'path1'を読んでいないのはなぜですか?画像の拡張子が違うのはなぜですか?どのバージョンのMPLを使用していますか? –