小编rot*_*age的帖子

如何验证网络摄像头校准的正确性?

我对相机校准技术完全不了解......我正在使用OpenCV棋盘技术...我正在使用Quantum的网络摄像头......

这是我的观察和步骤..

  1. 我保持每个国际象棋方面= 3.5厘米.这是一个7 x 5的棋盘,有6 x 4个内角.我在距离网络摄像头1到1.5米的距离拍摄了10张不同视角/姿势的图像.
  2. 我下面的C代码学习OpenCV的Bradski用于校准.我的校准代码是

    cvCalibrateCamera2(object_points,image_points,point_counts,cvSize(640,480),intrinsic_matrix,distortion_coeffs,NULL,NULL,CV_CALIB_FIX_ASPECT_RATIO);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在调用此函数之前,我将沿着内部矩阵的对角线的第一个和第二个元素作为一个,以保持焦距的比率恒定并使用 CV_CALIB_FIX_ASPECT_RATIO

  4. 随着棋盘距离的变化fxfy变化fx:fy几乎等于1.有200到400的数量级cxcy值.当我改变距离时fx,fy它们在300到700的数量级.

  5. 目前我把所有的失真系数都归零,因为我没有得到包括失真系数在内的好结果.我的原始图像看起来比未失真的图像更漂亮!!

我正确地进行了校准吗?我应该使用除CV_CALIB_FIX_ASPECT_RATIO?之外的任何其他选项吗?如果是的话,哪一个?

opencv computer-vision camera-calibration

53
推荐指数
2
解决办法
3万
查看次数

OpenCV SURF功能未实现

当我尝试运行示例find_obj.cpp或任何OpenCV SURF程序时,我在执行代码时在命令提示符中收到以下错误.该项目的构建没有错误和警告.我正在使用VS2011 beta,OpenCV 2.4和windows7.

错误信息:

OpenCV Error: The function/feature is not implemented < OpenCV was built without SURF support> in unknown function,file ..\..\..\src\opencv\modules\legacy\src\features2d.cpp, line 77
Run Code Online (Sandbox Code Playgroud)

我尝试在调试模式下使用Cmake然后再使用VS2011再次构建OpenCV 2.4,然后在IDE中添加了lib路径,但仍然没有结果.

我该如何解决这个问题?

    #include <opencv2/objdetect/objdetect.hpp>
    #include <opencv2/features2d/features2d.hpp>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/legacy/legacy.hpp>
    #include <opencv2/legacy/compat.hpp>
    #include <opencv2/flann/flann.hpp>
    #include <opencv2/calib3d/calib3d.hpp>
    #include <opencv2/nonfree/features2d.hpp>
    #include <opencv2/nonfree/nonfree.hpp>

using namespace std;
using namespace cv;
int main()
{
    cv::initModule_nonfree();//THIS LINE IS IMPORTANT   

   IplImage *image1 = cvLoadImage("C:\\SURF\\1.jpg"); 
    IplImage *image2 = cvLoadImage("C:\\SURF\\2.jpg");

    CvMemStorage* memoryBlock = cvCreateMemStorage();
    CvSeq* image1KeyPoints;
    CvSeq* image1Descriptors;
    CvSeq* …
Run Code Online (Sandbox Code Playgroud)

c++ implementation opencv surf visual-c++

10
推荐指数
2
解决办法
3万
查看次数

什么是隐式共享类?

在过去的6个月里,我一直在与Qt合作,我仍在努力理解隐式共享课程的概念.我有以下问题:

  1. 什么是隐式共享类以及它们如何工作?
  2. 奇趣科技的Qt网站表示,它可以最大限度地利用资源并最大限度地减少复制.请解释一下这是怎么回事.
  3. 任何人都可以提供更好的理解的例子吗?任何以任何方式解释这个概念的网站的链接也是受欢迎的.

所有答案的Thanx伙伴们......围绕这个主题的另一个问题是堆栈对象指向堆分配共享数据..这是图...这个图片..

任何对这个??? ...以及究竟什么是引用计数?它是一种计数器,当对象引用公共共享数据时,它是一种反击,反之亦然?

c++ oop qt memory-management qt4

6
推荐指数
1
解决办法
1892
查看次数

使用opencv的光流

我正在使用OpenCV的Pyramid Lukas Kanade功能来估算光流.我打电话给cvGoodFeaturesToTrack然后cvCalcOpticalFlowPyrLK.这是我的代码:

while(1)
{
...

cvGoodFeaturesToTrack(frameAth,eig_image,tmp_image,cornersA,&corner_count,0.01,5,NULL,3,0.4);

std::cout<<"CORNER COUNT AFTER GOOD FEATURES2TRACK CALL = "<<corner_count<<std::endl;

cvCalcOpticalFlowPyrLK(frameAth,frameBth,pyrA,pyrB,cornersA,cornersB,corner_count,cvSize(win_size,win_size),5,features_found,features_errors,cvTermCriteria( CV_TERMCRIT_ITER| CV_TERMCRIT_EPS,20,0.3 ),CV_LKFLOW_PYR_A_READY|CV_LKFLOW_PYR_B_READY);

cvCopy(frameBth,frameAth,0);
...
}
Run Code Online (Sandbox Code Playgroud)

frameAth是以前的灰色框架,frameBth是网络摄像头的当前灰色框架.但是当我在每帧中输出要跟踪的好特征的数量时,该数量在总和时间之后减少并且持续减少.但如果我终止程序并再次执行代码(不干扰网络摄像头的视野),则会显示更多数量的点作为跟踪的良好特征...如何对于相同的视野和相同的视野场景中的功能给在点的数目这样的区别...和差分high..eg..number一样好特征以跟踪4分钟后执行的是20或50 ...但是,当同一个程序终止,并且再次执行该数字是500至700初始但又慢慢减少..我在过去4个月使用opencv所以我是新的openCV ..请指导我或告诉我在哪里可以找到解决方案...很多提前..

c++ opencv image-processing

5
推荐指数
2
解决办法
3660
查看次数

如何实现频繁启动/停止线程(QThread)

我需要使用按钮非常频繁地启动和停止线程..我正在使用Qt.最近我学会了创建一个worker的QObject并将其移动到QThread的对象,作为在Qt中实现线程的正确方法.以下是我的实施......

Worker.h

class worker : public QObject
{
    Q_OBJECT
public:
    explicit worker(QObject *parent = 0);
    void StopWork();
    void StartWork();
    bool IsWorkRunning();

signal:
    void SignalToObj_mainThreadGUI();

public slots:
    void do_Work();

private:
    void Sleep();

    volatile bool running,stopped;
    QMutex mutex;
    QWaitCondition waitcondition;
};
Run Code Online (Sandbox Code Playgroud)

Worker.cpp

 worker::worker(QObject *parent) :
    QObject(parent),stopped(false),running(false)
{
}

void worker::do_Work()
{
    running = true;
    while(!stopped)
    {
        emit SignalToObj_mainThreadGUI();
        Sleep();
    }
}

void worker::Sleep()
{
    mutex.lock();
    waitcondition.wait(&mutex,10);
    mutex.unlock();
}

void worker::StopWork()
{
    mutex.lock();
    stopped = true;
    running = false;
    mutex.unlock();
}

void worker::StartWork() …
Run Code Online (Sandbox Code Playgroud)

qt multithreading qthread

4
推荐指数
1
解决办法
8313
查看次数

getTickCount时间单位混乱

在Stack 的问题答案和第52页的书中,我发现正常的getTickCount getTickFrequency组合来测量执行时间,以毫秒为单位.然而,OpenCV网站以秒为单位表示其时间.我很迷惑.请帮忙...

opencv

4
推荐指数
1
解决办法
1万
查看次数

如何使用STL的slist?

我是STL的新手.我发现slist(单链接链表)不是标准C++标准的一部分.那么如何在我的程序中使用它?

我下载了slist.h并粘贴了

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include
Run Code Online (Sandbox Code Playgroud)

但它要求algobase.h和我在VS9或Windows SDK的include文件夹中找不到的其他头文件(alloc.h,stl_slist.h).怎么去呢?请帮忙.

c++ stl linked-list

2
推荐指数
1
解决办法
3413
查看次数

最小化窗口后冻结的小部件

我正在为应用程序使用Qt5 Creator,并且在主窗口的构造函数中调用this->setWindowState(Qt::WindowMaximized)。当窗口最初最大化时,单选按钮和复选框可以正常工作(即,轻松地在选中和未选中之间切换)。

但是,如果我将其最小化并最大化,则单选按钮和复选框似乎会冻结并且不会随意切换。但是,如果我再次恢复原状,一切都会好起来的。

我尝试this->update在单选按钮和复选框的插槽中包括a ,但这没有用。任何帮助,将不胜感激。

user-interface qt qmainwindow qt5

1
推荐指数
1
解决办法
1680
查看次数