我正在嘗試使用開放式CV FAST算法來檢測來自視頻源的角點。方法調用和設置似乎非常簡單,但我遇到了一些問題。當我嘗試使用此代碼OpenCV有cv :: FAST的問題
while(run)
{
clock_t begin,end;
img = cvQueryFrame(capture);
key = cvWaitKey(10);
cvShowImage("stream",img);
//Cv::FAST variables
int threshold=9;
vector<KeyPoint> keypoints;
if(key=='a'){
//begin = clock();
Mat mat(tempImg);
FAST(mat,keypoints,threshold,true);
//end = clock();
//cout << "\n TIME FOR CALCULATION: " << double(diffClock(begin,end)) << "\n" ;
}
我得到這個錯誤:
OpenCV的錯誤:斷言未知 功能,文件失敗(image.data & & image.type()== CV_8U)。 ....... \ OCV \ OpenCV中的\ src \ cvaux \ cvfast.cpp,線路6039
所以我想它與圖像的深度的問題,所以我當我補充一點:
IplImage* tempImg = cvCreateImage(Size(img->width,img->height),8,1);
cvCvtColor(img,tempImg,CV_8U);
我得到:
OpenCV的錯誤:渠道的壞數量未知功能,文件........ \ OCV \ OpenCV中的\ src \簡歷\(這個通道數不正確CONV 版爲代碼) cvcolor.cpp ,line 2238
我試過用Mat而不是IplImage來捕獲,但是我一直得到同樣的錯誤。
任何建議或幫助? 在此先感謝。
整個文件只是爲了使它更容易爲任何人:
#include "cv.h"
#include "cvaux.hpp"
#include "highgui.h"
#include <time.h>
#include <iostream>
double diffClock(clock_t begin, clock_t end);
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
//Create Mat img for camera capture
IplImage* img;
bool run = true;
CvCapture* capture= 0;
capture = cvCaptureFromCAM(-1);
int key =0;
cvNamedWindow("stream", 1);
while(run)
{
clock_t begin,end;
img = cvQueryFrame(capture);
key = cvWaitKey(10);
cvShowImage("stream",img);
//Cv::FAST variables
int threshold=9;
vector<KeyPoint> keypoints;
if(key=='a'){
//begin = clock();
IplImage* tempImg = cvCreateImage(Size(img->width,img->height),8,1);
cvCvtColor(img,tempImg,CV_8U);
Mat mat(img);
FAST(mat,keypoints,threshold,true);
//end = clock();
//cout << "\n TIME FOR CALCULATION: " << double(diffClock(begin,end)) << "\n" ;
}
else if(key=='x'){
run= false;
}
}
cvDestroyWindow("stream");
return 0;
}
我已通過API看,花了相當多的時間四處尋找在線。猜猜我只是沒有找到正確的地方。感謝指針。 – dipsmac 2012-03-14 23:41:30
快速代碼示例非常過時。此外,雖然它沒有解決您的錯誤,但您應該使用Mat類型,不推薦使用IplImage。 – 2012-06-09 17:26:53