gpt4 book ai didi

python - OpenCV:如何将图像传递给其他方法?

转载 作者:行者123 更新时间:2023-12-02 17:26:31 25 4
gpt4 key购买 nike

我正在尝试使用OpenCV捕获图像。然后,我希望将此图像保存为变量,以便可以在get_matches方法中使用它。

class imageCapture:

storedImges = ['C:\pythonImg\image1.jpg']

def __init__(self):
self.image = None

def captureImage(self):
cap = cv2.VideoCapture(0)
if cap.isOpened():
ret, frame = cap.read()
print(ret)
else:
ret = False
img1 = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) #this converts the colours to RGB from BGR
self.image = img1

在这里,我将img1保存到self.image变量中,以便可以在以下方法中使用它:
def get_Matches(self): 
trainImg = cv2.imread(self.image,0)

orb = cv2.ORB_create()
kp1, des1 = orb.detectAndCompute(trainImg,None) #this finds keypoints and descriptors with SIFT
kp2, des2 = orb.detectAndCompute(storedImges[0],None)

bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) #create a bfMatcher object
matches = bf.match(des1,des2) #Match descriptors
matches = sorted(matches, key = lambda x:x.distance) #sorts them in order of their distance

img3 = cv2.drawMatches(trainImg,kp1,storedImg,kp2,matches[:10],None, flags=2) #helps us to draw the matches.
plt.imshow(img3)
plt.show()

然后创建对象并调用方法:
testobj = imageCapture()
testobj.captureImage()
testobj.get_Matches()

我知道我做错了一切,我只是停留在采用哪种方法来进行编译。我当时想我需要通过参数将图像从 captureImage() 传递到 get_matches 方法,但是我也一直遇到问题。这更多是由于我对 __init__ (构造函数)方法以及如何调用和设置变量缺乏了解。

谢谢

最佳答案

self.image中,内存中有图像,而不是文件名,因此,您不能将其用作文件名来使用cv2.imread(filename)从磁盘读取图像。

直接使用self.image代替trainImg中的get_Matches()

kp1, des1 = orb.detectAndCompute(self.image, None)
storedImges[0]是文件名,因此与众不同,因此您必须使用 imread()加载它
image = cv2.imread(storedImges[0], 0)

kp2, des2 = orb.detectAndCompute(image, None)

关于python - OpenCV:如何将图像传递给其他方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59090557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com