Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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
Opencv SiftFeatureDetector。是否检测到功能已损坏?_Opencv_Sift_Feature Detection_Surf - Fatal编程技术网

Opencv SiftFeatureDetector。是否检测到功能已损坏?

Opencv SiftFeatureDetector。是否检测到功能已损坏?,opencv,sift,feature-detection,surf,Opencv,Sift,Feature Detection,Surf,我一直在尝试从在线资源中筛选/浏览,并想自己测试一下 我第一次尝试在没有非免费库的情况下使用以下代码: int _tmain(int argc, _TCHAR* argv[]) { Mat img = imread("c:\\car.jpg", 0); Ptr<FeatureDetector> feature_detector = FeatureDetector::create("SIFT"); vector<KeyPoint> keypoints; feature_d

我一直在尝试从在线资源中筛选/浏览,并想自己测试一下

我第一次尝试在没有非免费库的情况下使用以下代码:

int _tmain(int argc, _TCHAR* argv[])
{
Mat img = imread("c:\\car.jpg", 0);
Ptr<FeatureDetector> feature_detector = FeatureDetector::create("SIFT");
vector<KeyPoint> keypoints;

feature_detector->detect(img, keypoints);

Mat output;

drawKeypoints(img, keypoints, output, Scalar(255, 0, 0));

namedWindow("meh", CV_WINDOW_AUTOSIZE);
imshow("meh", output);
waitKey(0);



return 0;
int main(int argc, char** argv) 
{
    const Mat input = cv::imread("/tmp/image.jpg", 0); //Load as grayscale

    SiftFeatureDetector detector;
    vector<KeyPoint> keypoints;
    detector.detect(input, keypoints);

    // Add results to image and save.
    Mat output;
    drawKeypoints(input, keypoints, output);
    imwrite("/tmp/SIFT_RESULT.jpg", output);

    return 0;

 }
再次编译时不会出现错误,但运行时会在此步骤中断:
detector.detect(输入,关键点)

我找不到原因。谁能帮我一下吗

多谢各位

编辑:这是我在它中断时得到的错误:

SIFT.exe中0x007f0900处的未处理异常:0xC0000005:访问冲突读取位置0x00000000

<我的设置:微软Visual C++ 2010,OpenCV2.4.2,WindowsXP。全部的 添加和链接的库


使用彩色图像而不是灰度,这样对我很有用。
如果彩色图像也无法工作,您也可以尝试跳过“const”

const Mat input = cv::imread("/tmp/image.jpg");

使用彩色图像而不是灰度,这样对我很有用。
如果彩色图像也无法工作,您也可以尝试跳过“const”

const Mat input = cv::imread("/tmp/image.jpg");

如果你更具体地说明它是如何“断裂”的,人们就更有可能帮助你。你会犯什么样的错误?是否正在抛出断言?等等。谢谢,添加了详细信息。这是您所说的必需错误吗?听起来图像可能无法正确读取。在调用
detect()
之前,请确保您的图像数据不为
NULL
,谢谢,我以前也尝试过,我用以下命令编辑了imshow:
imshow(“meh”,img)并且当我运行它时(在注释了有问题的行之后),它会正确地显示图像。我想我还应该注意,当我一步一步地调试,并在出错之前检查关键点的值时,它有两个参数;大小和容量:两者的值均为0。如果你更具体地说明它是如何“断裂”的,人们更有可能帮助你。你会犯什么样的错误?是否正在抛出断言?等等。谢谢,添加了详细信息。这是您所说的必需错误吗?听起来图像可能无法正确读取。在调用
detect()
之前,请确保您的图像数据不为
NULL
,谢谢,我以前也尝试过,我用以下命令编辑了imshow:
imshow(“meh”,img)并且当我运行它时(在注释了有问题的行之后),它会正确地显示图像。我想我还应该注意,当我一步一步地调试,并在出错之前检查关键点的值时,它有两个参数;大小和容量:两者的值均为0