goodFeaturesToTrack错误

时间:2016-08-27 17:43:20

标签: c++ opencv

我刚刚开始在VS express 2013中使用OpenCV(2.4.13),当我尝试编译和调试此代码时:

#include <cstdio>
#include <iostream>
#include <opencv2\opencv.hpp>
#include <stdlib.h>
#include <stdio.h>

using namespace std;
using namespace cv;

int main()
{

    //cargar el archivo de video especificado
    VideoCapture vc("sequence.mpg");

    //verificar si se ha podio cargar el video
    if (!vc.isOpened())
        return -1;

    //obtener los cuadros por segundo
    double fps = vc.get(CV_CAP_PROP_FPS);

    // calcular el tiempo de espera entre cada imagen a mostrar
    int delay = (int)1000 / fps;

    Mat frame1, frame2;

    bool bSuccess1 = vc.read(frame1);
    frame2 = frame1;

    vector<Point2f> features_prev, features_next;
    long int max_count = 50;
    double qlevel = 0.01;
    double minDist = 10;
    int blockSize = 3;
    bool useHarrisDetector = false;
    double k = 0.04;

    goodFeaturesToTrack(frame2, features_next, max_count, qlevel, minDist, Mat(), blockSize, useHarrisDetector, k);
    return 0;
}

我在控制台上显示以下错误:

  

"OpenCV Error: Assertion failed (src.type() == CV_BUC1 || src.type() == CV_32FC1) in cv::cornerEigenValsVecs, file C:\builds\2_4_PackSlave-win32-vc12-shared\opencv\imgproc\src\corner.cpp, line 263"

VS express 2013创建了一个窗口,其中包含以下消息:

  

"Excepción no controlada en 0x759796C2 en Ejemplo1.exe: excepción de Microsoft C++: cv::Exception en la ubicación de memoria 0x0117F014."

我将其翻译为:

  

"Uncontroled exception at 0x759796C2 in Ejemplo1.exe: C++ Microsoft Exception cv::Exception at the memory address 0x0117F014."

有关这里发生的事情的任何线索?我做错了什么以及如何解决?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

错字它是CV_8UC1而不是CV_BUC1。更多信息如下。

请注意错误消息中的重要部分:Assertion failed (src.type() == CV_8UC1 || src.type() == CV_32FC1)

CV_8UC1或CV_32FC1实际上是CV_&lt; NUMBER_OF_BITS_PER_CHANNEL&GT;&LT; U(无符号)/ S(签名)/ F(浮动)GT;℃下NUMBER_OF_CHANNEL取代。链接到docs

消息显示输入图像类型不正确。您可能正在从彩色视频中读取图像,因此帧的类型是CV_8UC3,彩色图像。

首先应创建灰度图像。尝试cvtColor创建灰度图像。