- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 OpenCV 的 calcOpticalFlowPyrLK() 函数,但我似乎无法克服这个错误:
OpenCV Error: Assertion failed (mtype == type0 || (CV_MAT_CN(mtype) == CV_MAT_CN(type0) && ((1 << type0) & fixedDepthMask) != 0)) in create, file /tmp/opencv20160107-21708-lubvml/opencv-2.4.12/modules/core/src/matrix.cpp, line 1486 libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /tmp/opencv20160107-21708-lubvml/opencv-2.4.12/modules/core/src/matrix.cpp:1486: error: (-215) mtype == type0 || (CV_MAT_CN(mtype) == CV_MAT_CN(type0) && ((1 << type0) & fixedDepthMask) != 0) in function create
我检查了输入参数,两张图片都是:尺寸:[1280 x 720]深度:(CV_8U)
代码如下:
Mat frame;
Mat back;
Mat fore;
Mat temp;
Mat prevImage;
Mat currImage;
// for floodfill
Point seed = Point(0,0);
VideoCapture cap("./Sequence2/Sequence_03_%03d.jpg");
// Background subtraction
BackgroundSubtractorMOG2 bg;
bg.set("nmixtures",5);
bg.set("detectShadows", true);
bg.set("fTau", 0.5);
//
bool foundpoints = false;
vector<uchar> status, err;
// Blob Detector
SimpleBlobDetector::Params params;
//params.filterByColor = true;
//params.blobColor = 255; // use if bitwise not statement used
// // Filter by Area.
params.filterByArea = true; //size
params.minArea = 25;
params.maxArea = 300;
params.filterByCircularity = true; // circle or not
params.minCircularity = 0.15;
params.filterByConvexity = true; // closed or not
params.minConvexity = 0.92;
params.filterByInertia = true; // elongated or not
params.minInertiaRatio = 0.40;
SimpleBlobDetector detector(params);
//
std::vector<std::vector<Point> > contours;
std::vector<KeyPoint> keypoints;
std::vector<Point2f> pKeypoints, prevKeypoints;
namedWindow("Video");
//namedWindow("Background");
for (int i = 0; i < 623; i++) {
file << "./Output3/image" << i << ".jpg";
cap >> frame;
// CONVERT TO GRAY
cvtColor(frame, temp, CV_RGB2GRAY);
//adaptiveThreshold(frame,temp,1,ADAPTIVE_THRESH_MEAN_C,THRESH_BINARY,3,1);
bg.operator ()(temp,fore);
//bg.getBackgroundImage(back);
// THREHOLD THE IMAGE
threshold(fore,fore,80,150,THRESH_TOZERO);
erode(fore,fore,cv::Mat());
dilate(fore,fore,cv::Mat());
findContours(fore,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
// REMOVE SOME NOISE
cv::floodFill(fore, seed,(255));
erode(fore,fore,cv::Mat());
dilate(fore,fore,cv::Mat());
//bitwise_not(fore,fore);
erode(fore,fore,cv::Mat());
dilate(fore,fore,cv::Mat());
detector.detect(fore, keypoints);
//std::cout << keypoints.size() << "\n";
if (keypoints.size() > 0){
if (foundpoints == false)
foundpoints = true;
else{
cv::Size winsize = fore.size();
KeyPoint::convert(keypoints,pKeypoints);
// std::cout << pKeypoints.size() << " , " << prevKeypoints.size() << " , " << prevImage.depth() << " , "<< fore.depth();
calcOpticalFlowPyrLK(prevImage,fore,prevKeypoints,pKeypoints,status,err,winsize);
prevImage.pop_back();
}
prevImage.push_back(fore);
KeyPoint::convert(keypoints,prevKeypoints);
}
imshow("Frame",fore); // frame
// imshow("Background",back);
if(cv::waitKey(30) >= 0) break;
imwrite(file.str(), fore);
file.str("");
}
最佳答案
更改 vector<uchar> err
至 Mat err
.
关于c++ - Opencv 2.4.12_2 calcOpticalFlowPyrLK() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955367/
我正在尝试编写一个 python 程序来基于他们眼睛之间的一个点来跟踪用户的头部运动。我正在使用 OpenCV 2.4.5 和 calcOpticalFlowPyrLK。我使用 HAAR 点设置了初始
我们可以使用方法 Video.calcOpticalFlowPyrLK 中所有点 MatOfPoint2f[] 的数组“MatOfPoint2f prevPts”作为输入参数,就像 OpenCV fo
我正在尝试在 Ubuntu 上的 opencv 2.4.12 中使用以下代码进行视频稳定,我使用 calcopticalflowpyrlk,它会引发断言失败错误:错误如下: OpenCV 错误:断言失
我正在做一个 opencv 应用程序,我正在使用 de LucasKanada 算法。我使用这个功能: calcOpticalFlowPyrLK(pregray, gray,points[0], po
通过 the Lucas-Kanade optical flow tracker example 运行 480x640 视频,我得到了一些超出相机框架的跟踪点,例如负 x 和 y 坐标。这怎么可能?这
问题 我正在尝试在 Lucas Kanade 光流跟踪方法中添加用于跟踪的自定义点。但是,当我将自定义点插入到自动计算的点数组后调用此函数时,出现断言失败错误。 OpenCV Error: Asser
我对 CalcOpticalFlowPyrLK() 类中的两个参数有疑问。这是文档的链接: http://docs.opencv.org/trunk/modules/video/doc/motion_
我正在使用 python 绑定(bind)运行 opencv 2.4.1,但在计算光流时遇到困难。 具体这段代码: #calculate the opticalflow if prev_saturat
我需要获取 u,v 组件,以便为盲人计算避障策略。 我将框架分成两半并总结其中的流量分量 u+v ,避免策略是盲人将远离具有较高流量值的那一半。 opencv 中的函数 calcOpticalFlow
我正在尝试用 Python OpenCV 制作一个程序,用户可以在其中定义视频上的点,光流会跟踪它。 我尝试以 numpy 数组的形式创建我自己的坐标,并尝试将其传递给 OpenCV 中的 calcO
一段时间以来,我一直在尝试使用 OpenCV 构建一个小型光流示例。除了函数调用 calcOpticalFlowPyrLK 之外,一切正常,它在控制台窗口中打印以下失败断言: OpenCV Error
我正在尝试在 visual studio 中测试 calcOpticalFlowPyrLK() int c++,但我在编写代码时遇到了一些问题。我使用 FAST 算法获得了 2 张图像的关键点。这是我
我对 opencv 2.4.2 上的新 calcOpticalFlowPyrLK 函数有一些问题。这是我的旧功能和参数: calcOpticalFlowPyrLK(prevImg, currentIm
我正在尝试使用 OpenCV 的 calcOpticalFlowPyrLK() 函数,但我似乎无法克服这个错误: OpenCV Error: Assertion failed (mtype == ty
我正在开发 Android 视频稳定应用程序!我遇到了一些与 goodfeaturestotrack 和 calcOpticalFlowPyrLK 函数相关的问题,因为最终输出是相同的点!我用谷歌搜索
我正在尝试使用 Python 绑定(bind)在 OpenCV 2.3.1 中制作 LK 跟踪器。当我做的时候 calcOpticalFlowPyrLK(img1, img2,
我现在正在学习 OpenCV,并且正在测试可用的 LK 演示程序。我是编程新手,所以我不知道出了什么问题。 我遇到了这些问题: C:\Qt\projects\build-lkdemo-Desktop_
我在 Linux 上使用 OpenCV 2.4.2。我正在用 C++ 编写。我想跟踪简单的对象(例如白色背景上的黑色矩形)。首先,我使用 goodFeaturesToTrack 然后使用 calcOp
我一直无法将 calcOpticalFlowPyrLK 与 MatOfPoint2f 一起使用。我声明我的类型如下: private Mat mPreviousGray;
我并没有真正从 cv::calcOpticalFlowPyrLK 中的 criteria 得到什么是 epsilon 和 maxCount。有人可以给我更多相关信息吗? openCV 文档中的定义对我
我是一名优秀的程序员,十分优秀!