我对相机校准技术完全不了解......我正在使用OpenCV棋盘技术...我正在使用Quantum的网络摄像头......
这是我的观察和步骤..
我下面的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)在调用此函数之前,我将沿着内部矩阵的对角线的第一个和第二个元素作为一个,以保持焦距的比率恒定并使用 CV_CALIB_FIX_ASPECT_RATIO
随着棋盘距离的变化fx
和fy
变化fx:fy
几乎等于1.有200到400的数量级cx
和cy
值.当我改变距离时fx
,fy
它们在300到700的数量级.
目前我把所有的失真系数都归零,因为我没有得到包括失真系数在内的好结果.我的原始图像看起来比未失真的图像更漂亮!!
我正确地进行了校准吗?我应该使用除CV_CALIB_FIX_ASPECT_RATIO
?之外的任何其他选项吗?如果是的话,哪一个?
当我尝试运行示例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) 在过去的6个月里,我一直在与Qt合作,我仍在努力理解隐式共享课程的概念.我有以下问题:
所有答案的Thanx伙伴们......围绕这个主题的另一个问题是堆栈对象指向堆分配共享数据..这是图...
任何对这个??? ...以及究竟什么是引用计数?它是一种计数器,当对象引用公共共享数据时,它是一种反击,反之亦然?
我正在使用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 ..请指导我或告诉我在哪里可以找到解决方案...很多提前..
我需要使用按钮非常频繁地启动和停止线程..我正在使用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) 我是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
).怎么去呢?请帮忙.
我正在为应用程序使用Qt5 Creator,并且在主窗口的构造函数中调用this->setWindowState(Qt::WindowMaximized)
。当窗口最初最大化时,单选按钮和复选框可以正常工作(即,轻松地在选中和未选中之间切换)。
但是,如果我将其最小化并最大化,则单选按钮和复选框似乎会冻结并且不会随意切换。但是,如果我再次恢复原状,一切都会好起来的。
我尝试this->update
在单选按钮和复选框的插槽中包括a ,但这没有用。任何帮助,将不胜感激。
c++ ×4
opencv ×4
qt ×3
linked-list ×1
oop ×1
qmainwindow ×1
qt4 ×1
qt5 ×1
qthread ×1
stl ×1
surf ×1
visual-c++ ×1