gpt4 book ai didi

opencv - 在Python中将OpenCV SURF应用于HSV颜色空间时出错

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

我正在将SURF实现为HSV图像,但是它不起作用。
当我对RGB图像执行相同操作时,效果很好。

from PIL import Image
import cv2
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

#loaading image
rgb_img_arr= np.array(Image.open("myImage.jpg"))
hsv_image_arr=matplotlib.colors.rgb_to_hsv(rgb_img_arr)

surf = cv2.xfeatures2d.SURF_create()

#it works fine
keypoints, descriptors = surf.detectAndCompute(rgb_img_arr, None)
rgb_img = cv2.drawKeypoints(rgb_img_arr, keypoints, None)
plt.imshow(rgb_img )

#But it doent work
keypoints, descriptors = surf.detectAndCompute(hsv_image_arr, None)
hsv_img = cv2.drawKeypoints(hsv_image_arr, keypoints, None)
plt.imshow(hsv_img )

我得到的错误是-

C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\surf.cpp:892: error: (-215) !_img.empty() && ((imgtype) & ((1 << 3) - 1)) == 0 && (imgcn == 1 || imgcn == 3 || imgcn == 4) in function cv::xfeatures2d::SURF_Impl::detectAndCompute



请告诉我我该如何解决

最佳答案

detectAndCompute需要CV_8U图像。 (imgtype) & ((1 << 3) - 1)) == 0有点晦涩难懂,但是如果您将错误跟踪到源中,则可以看到:https://github.com/opencv/opencv_contrib/blob/2231018c839d728811a39556ec83741bf9a27614/modules/xfeatures2d/src/surf.cpp#L892

HSV转换matplotlib.colors.rgb_to_hsv会返回一个 float 图片。

您可以将 float 图像转换回无符号图像。或者,您可以直接使用OpenCV颜色转换,默认情况下将返回8U图像:

hsv_image_array = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)

关于opencv - 在Python中将OpenCV SURF应用于HSV颜色空间时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798248/

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