我刚刚开始在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."
有关这里发生的事情的任何线索?我做错了什么以及如何解决?
感谢您的帮助!
答案 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创建灰度图像。