Fixed Windows build warnings and configuration problem.

This commit is contained in:
Andrey Kamaev 2012-06-30 20:45:01 +00:00
parent 27c23b557c
commit afe11f69fb
8 changed files with 74 additions and 84 deletions

View File

@ -89,7 +89,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)
endif() endif()
endif() endif()
if(CMAKE_SYSTEM_PROCESSOR MATCHES amd64.*|x86_64.*) if(CMAKE_SYSTEM_PROCESSOR MATCHES amd64.*|x86_64.* OR CMAKE_GENERATOR MATCHES "Visual Studio.*Win64")
set(X86_64 1) set(X86_64 1)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES i686.*|i386.*|x86.*) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES i686.*|i386.*|x86.*)
set(X86 1) set(X86 1)

View File

@ -51,6 +51,7 @@
#if defined _MSC_VER && _MSC_VER >= 1200 #if defined _MSC_VER && _MSC_VER >= 1200
#pragma warning( disable: 4714 ) //__forceinline is not inlined #pragma warning( disable: 4714 ) //__forceinline is not inlined
#pragma warning( disable: 4127 ) //conditional expression is constant #pragma warning( disable: 4127 ) //conditional expression is constant
#pragma warning( disable: 4244 ) //conversion from '__int64' to 'int', possible loss of data
#endif #endif
namespace cv namespace cv

View File

@ -955,13 +955,13 @@ bool CV_OperationsTest::TestSVD()
Mat Q(3,3,CV_32FC1); Mat Q(3,3,CV_32FC1);
Mat U,Vt,R,T,W; Mat U,Vt,R,T,W;
Dp.at<float>(0,0)=0.86483884; Dp.at<float>(0,1)= -0.3077251; Dp.at<float>(0,2)=-0.55711365; Dp.at<float>(0,0)=0.86483884f; Dp.at<float>(0,1)= -0.3077251f; Dp.at<float>(0,2)=-0.55711365f;
Dp.at<float>(1,0)=0.49294353; Dp.at<float>(1,1)=-0.24209651; Dp.at<float>(1,2)=-0.25084701; Dp.at<float>(1,0)=0.49294353f; Dp.at<float>(1,1)=-0.24209651f; Dp.at<float>(1,2)=-0.25084701f;
Dp.at<float>(2,0)=0; Dp.at<float>(2,1)=0; Dp.at<float>(2,2)=0; Dp.at<float>(2,0)=0; Dp.at<float>(2,1)=0; Dp.at<float>(2,2)=0;
Dc.at<float>(0,0)=0.75632739; Dc.at<float>(0,1)= -0.38859656; Dc.at<float>(0,2)=-0.36773083; Dc.at<float>(0,0)=0.75632739f; Dc.at<float>(0,1)= -0.38859656f; Dc.at<float>(0,2)=-0.36773083f;
Dc.at<float>(1,0)=0.9699229; Dc.at<float>(1,1)=-0.49858192; Dc.at<float>(1,2)=-0.47134098; Dc.at<float>(1,0)=0.9699229f; Dc.at<float>(1,1)=-0.49858192f; Dc.at<float>(1,2)=-0.47134098f;
Dc.at<float>(2,0)=0.10566688; Dc.at<float>(2,1)=-0.060333252; Dc.at<float>(2,2)=-0.045333147; Dc.at<float>(2,0)=0.10566688f; Dc.at<float>(2,1)=-0.060333252f; Dc.at<float>(2,2)=-0.045333147f;
Q=Dp*Dc.t(); Q=Dp*Dc.t();
SVD decomp; SVD decomp;

View File

@ -274,14 +274,14 @@ void FREAK::computeImpl( const Mat& image, std::vector<KeyPoint>& keypoints, Mat
// allocate descriptor memory, estimate orientations, extract descriptors // allocate descriptor memory, estimate orientations, extract descriptors
if( !extAll ) { if( !extAll ) {
// extract the best comparisons only // extract the best comparisons only
descriptors = cv::Mat::zeros(keypoints.size(), FREAK_NB_PAIRS/8, CV_8U); descriptors = cv::Mat::zeros((int)keypoints.size(), FREAK_NB_PAIRS/8, CV_8U);
#if CV_SSE2 #if CV_SSE2
__m128i* ptr= (__m128i*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]); __m128i* ptr= (__m128i*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]);
// binary: 10000000 => char: 128 or hex: 0x80 // binary: 10000000 => char: 128 or hex: 0x80
const __m128i binMask = _mm_set_epi8(0x80, 0x80, 0x80, 0x80, const __m128i binMask = _mm_set_epi8('\x80', '\x80', '\x80', '\x80',
0x80, 0x80, 0x80, 0x80, '\x80', '\x80', '\x80', '\x80',
0x80, 0x80, 0x80, 0x80, '\x80', '\x80', '\x80', '\x80',
0x80, 0x80, 0x80, 0x80); '\x80', '\x80', '\x80', '\x80');
#else #else
std::bitset<FREAK_NB_PAIRS>* ptr = (std::bitset<FREAK_NB_PAIRS>*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]); std::bitset<FREAK_NB_PAIRS>* ptr = (std::bitset<FREAK_NB_PAIRS>*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]);
#endif #endif
@ -390,7 +390,7 @@ void FREAK::computeImpl( const Mat& image, std::vector<KeyPoint>& keypoints, Mat
} }
} }
else { // extract all possible comparisons for selection else { // extract all possible comparisons for selection
descriptors = cv::Mat::zeros(keypoints.size(), 128, CV_8U); descriptors = cv::Mat::zeros((int)keypoints.size(), 128, CV_8U);
std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]); std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]);
for( size_t k = keypoints.size(); k--; ) { for( size_t k = keypoints.size(); k--; ) {
@ -522,16 +522,16 @@ vector<int> FREAK::selectPairs(const std::vector<Mat>& images
Mat descriptorsFloat = Mat::zeros(descriptors.rows, 903, CV_32F); Mat descriptorsFloat = Mat::zeros(descriptors.rows, 903, CV_32F);
std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(descriptors.rows-1)*descriptors.step[0]); std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(descriptors.rows-1)*descriptors.step[0]);
for( size_t m = descriptors.rows; m--; ) { for( int m = descriptors.rows; m--; ) {
for( size_t n = 903; n--; ) { for( int n = 903; n--; ) {
if( ptr->test(n) == true ) if( ptr->test(n) == true )
descriptorsFloat.at<float>(m,n)=1.0; descriptorsFloat.at<float>(m,n)=1.0f;
} }
--ptr; --ptr;
} }
std::vector<PairStat> pairStat; std::vector<PairStat> pairStat;
for( size_t n = 903; n--; ) { for( int n = 903; n--; ) {
// the higher the variance, the better --> mean = 0.5 // the higher the variance, the better --> mean = 0.5
PairStat tmp = { fabs( mean(descriptorsFloat.col(n))[0]-0.5 ) ,n}; PairStat tmp = { fabs( mean(descriptorsFloat.col(n))[0]-0.5 ) ,n};
pairStat.push_back(tmp); pairStat.push_back(tmp);

View File

@ -83,7 +83,7 @@ cv::gpu::CascadeClassifier_GPU_LBP::~CascadeClassifier_GPU_LBP() {
bool cv::gpu::CascadeClassifier_GPU_LBP::empty() const { throw_nogpu(); return true; } bool cv::gpu::CascadeClassifier_GPU_LBP::empty() const { throw_nogpu(); return true; }
bool cv::gpu::CascadeClassifier_GPU_LBP::load(const string&) { throw_nogpu(); return true; } bool cv::gpu::CascadeClassifier_GPU_LBP::load(const string&) { throw_nogpu(); return true; }
Size cv::gpu::CascadeClassifier_GPU_LBP::getClassifierSize() const { throw_nogpu(); return Size(); } Size cv::gpu::CascadeClassifier_GPU_LBP::getClassifierSize() const { throw_nogpu(); return Size(); }
void cv::gpu::CascadeClassifier_GPU_LBP::preallocateIntegralBuffer(cv::Size desired) { throw_nogpu();} void cv::gpu::CascadeClassifier_GPU_LBP::preallocateIntegralBuffer(cv::Size /*desired*/) { throw_nogpu();}
int cv::gpu::CascadeClassifier_GPU_LBP::detectMultiScale(const cv::gpu::GpuMat&, cv::gpu::GpuMat&, cv::gpu::GpuMat&, double, int) { throw_nogpu(); return 0; } int cv::gpu::CascadeClassifier_GPU_LBP::detectMultiScale(const cv::gpu::GpuMat&, cv::gpu::GpuMat&, cv::gpu::GpuMat&, double, int) { throw_nogpu(); return 0; }

View File

@ -545,7 +545,7 @@ TEST_P(MOG, Update)
cv::swap(temp, frame); cv::swap(temp, frame);
} }
mog(loadMat(frame, useRoi), foreground, learningRate); mog(loadMat(frame, useRoi), foreground, (float)learningRate);
mog_gold(frame, foreground_gold, learningRate); mog_gold(frame, foreground_gold, learningRate);

View File

@ -81,11 +81,7 @@ public:
double fps(); double fps();
private: private:
std::string path_; Ptr<IFrameSource> impl;
bool volatileFrame_;
struct VideoReader;
const VideoReader& reader_;
}; };
} // namespace videostab } // namespace videostab

View File

@ -56,74 +56,67 @@ namespace cv
namespace videostab namespace videostab
{ {
struct VideoFileSource::VideoReader namespace {
class VideoFileSourceImpl : public IFrameSource
{
public:
VideoFileSourceImpl(const std::string &path, bool volatileFrame)
: path_(path), volatileFrame_(volatileFrame) { reset(); }
virtual void reset()
{ {
#ifdef HAVE_OPENCV_HIGHGUI #ifdef HAVE_OPENCV_HIGHGUI
mutable VideoCapture vc; vc.release();
#endif vc.open(path_);
}; if (!vc.isOpened())
VideoFileSource::VideoFileSource(const string &path, bool volatileFrame)
: path_(path), volatileFrame_(volatileFrame), reader_(VideoReader()) { reset(); }
void VideoFileSource::reset()
{
#ifdef HAVE_OPENCV_HIGHGUI
reader_.vc.release();
reader_.vc.open(path_);
if (!reader_.vc.isOpened())
throw runtime_error("can't open file: " + path_); throw runtime_error("can't open file: " + path_);
#else #else
CV_Error(CV_StsNotImplemented, "OpenCV has been compiled without video I/O support"); CV_Error(CV_StsNotImplemented, "OpenCV has been compiled without video I/O support");
#endif #endif
} }
virtual Mat nextFrame()
Mat VideoFileSource::nextFrame()
{ {
Mat frame; Mat frame;
#ifdef HAVE_OPENCV_HIGHGUI #ifdef HAVE_OPENCV_HIGHGUI
reader_.vc >> frame; vc >> frame;
#endif #endif
return volatileFrame_ ? frame : frame.clone(); return volatileFrame_ ? frame : frame.clone();
} }
int VideoFileSource::width()
{
#ifdef HAVE_OPENCV_HIGHGUI #ifdef HAVE_OPENCV_HIGHGUI
return static_cast<int>(reader_.vc.get(CV_CAP_PROP_FRAME_WIDTH)); int width() {return static_cast<int>(vc.get(CV_CAP_PROP_FRAME_WIDTH));}
int height() {return static_cast<int>(vc.get(CV_CAP_PROP_FRAME_HEIGHT));}
int count() {return static_cast<int>(vc.get(CV_CAP_PROP_FRAME_COUNT));}
double fps() {return vc.get(CV_CAP_PROP_FPS);}
#else #else
return 0; int width() {return 0;}
int height() {return 0;}
int count() {return 0;}
double fps() {return 0;}
#endif #endif
}
int VideoFileSource::height() private:
{ std::string path_;
bool volatileFrame_;
#ifdef HAVE_OPENCV_HIGHGUI #ifdef HAVE_OPENCV_HIGHGUI
return static_cast<int>(reader_.vc.get(CV_CAP_PROP_FRAME_HEIGHT)); VideoCapture vc;
#else
return 0;
#endif #endif
} };
int VideoFileSource::count() }//namespace
{
#ifdef HAVE_OPENCV_HIGHGUI
return static_cast<int>(reader_.vc.get(CV_CAP_PROP_FRAME_COUNT));
#else
return 0;
#endif
}
double VideoFileSource::fps() VideoFileSource::VideoFileSource(const string &path, bool volatileFrame)
{ : impl(new VideoFileSourceImpl(path, volatileFrame)) {}
#ifdef HAVE_OPENCV_HIGHGUI
return reader_.vc.get(CV_CAP_PROP_FPS); void VideoFileSource::reset() { impl->reset(); }
#else Mat VideoFileSource::nextFrame() { return impl->nextFrame(); }
return 0;
#endif int VideoFileSource::width() { return ((VideoFileSourceImpl*)impl.obj)->width(); }
} int VideoFileSource::height() { return ((VideoFileSourceImpl*)impl.obj)->height(); }
int VideoFileSource::count() { return ((VideoFileSourceImpl*)impl.obj)->count(); }
double VideoFileSource::fps() { return ((VideoFileSourceImpl*)impl.obj)->fps(); }
} // namespace videostab } // namespace videostab
} // namespace cv } // namespace cv