OpenCV 3 Settings

Common Definition & Setting for OpenCV

はじめに

当サイトでは、2D/3DのOpenCVプログラムを一つのプロジェクトに纏めて作成しています。理由は単に、Argument/Parameterを実行中のプログラムから、あとに実行するプログラムに引継ぐ事が楽だからです。

本稿では、プロジェクトの定義と設定項目を解説します。以下の3項目に分けて列記しています。

  • Header & Definition in “CMFC_OpenCV_StereoDoc.cpp”
  • Declaration Statement in “MFC_OpenCV_StereoDoc.h”
  • “Settings” Class

それでは、参りましょう。

Header & Definition in “CMFC_OpenCV_StereoDoc.cpp”

//#include "opencv2/opencv.hpp" 
#include "opencv2/core.hpp" 
#include "opencv2/calib3d.hpp" 
//#include "opencv2/calib3d/calib3d.hpp" 
#include "opencv2/highgui.hpp" 
//#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc.hpp" 
#include "opencv2/imgcodecs.hpp" 
//#include "opencv2/imgproc/imgproc.hpp" 
//#include "opencv2/contrib.hpp" 
#include "opencv2/core/utility.hpp" 
#include "opencv2/ximgproc/disparity_filter.hpp" 
//#include "opencv2/ximgproc.hpp" 
#include <atlimage.h> 
#include <vector> 
#include <string> 
#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
#include <sstream> 
#include <time.h> 
#include <Windows.h> 
#include <opencv_vtk_lib.hpp> 
#include <opencv2/viz.hpp> 
//#include <opencv2/viz/widget_accessor.hpp> 
//#include "ObjectDetector.hpp" 
//#include "PLYData.hpp" 
using namespace cv; 
using namespace ximgproc; 
using namespace std;

Declaration Statement in “MFC_OpenCV_StereoDoc.h”

Declaration of Edge-Detect function

//Declaration of Edge-Detect function 
-------------< Beginning of Code >------------------------ 
public: 
afx_msg void OnImageprocessEdgedetect(); 
-------------< End of Code >----------------------- 

Declaration of image buffers and frames

//Declaration of image buffers and frames 
-------------< Beginning of Code >------------------------ 
public: 
/* Declare image buffers and frames */  
 
/* For Camera 0 */ 
cv::VideoCapture cap0;     // Image buffer 
cv::Mat frame0;            // Image frame 
cv::Mat edges0;            // Processed image frame (Edge detection)   

/* For Camera 1 */ 
cv::VideoCapture cap1;     // Image buffer 
cv::Mat frame1;            // Image frame 
cv::Mat edges1;            // Processed image frame (Edge detection) 
  
/* For Camera 2 */ 
cv::VideoCapture cap2;     // Image buffer 
cv::Mat frame2;            // Image frame 
cv::Mat edges2;            // Processed image frame (Edge detection)  
 
afx_msg void OnImageprocessChessboardcornerdetect(); 
afx_msg void OnImageprocess1cameracalibration(); 
cv::FileStorage fs; 
//        cv::FileStorage fs2; 
//        LPCWSTR lptext; 
//        LPCWSTR lpcaption; 
//Size boardSize;  
 
static double CMFC_OpenCV_StereoDoc::computeReprojectionErrors(); 
static void CMFC_OpenCV_StereoDoc::calcChessboardCorners(); 
static bool CMFC_OpenCV_StereoDoc::runCalibration(); 
static void CMFC_OpenCV_StereoDoc::saveCameraParams(); 
static bool CMFC_OpenCV_StereoDoc::readStringList(); 
static bool CMFC_OpenCV_StereoDoc::runAndSave(); 
afx_msg void CMFC_OpenCV_StereoDoc::OnImageprocess2cameracalibration();  
 
//        class Settings; afx_msg void CMFC_OpenCV_StereoDoc::OnImageprocess3dptclouddisplay(); 
afx_msg void CMFC_OpenCV_StereoDoc::OnImageprocess3dptw(); 
afx_msg void OnImageprocessLeftRightCameraCalibration(); 
afx_msg void OnImageprocess3cameradisplay(); 
-------------< End of Code >-----------------------

“Settings” Class について、ひとこと

「../samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp」中に「class Settings」が入っています。それを、単に整理整頓のため、このプロジェクトのヘッダーファイル「MFC_OpenCV_StereoDoc.h」の最後尾に移動しました。内容は概ね無変更です。(Fisheye lensの部分だけは省きました。使う予定がありませんので…。)

Structure for 3D Point Cloud Display

更にひとこと、下記の Structure を”Settings” Classの後ろに追加しています。これは、3D Point Cloud Displayで使います。

struct Point3dRGB{ 
cv::Point3d point; 
uchar r; 
uchar g; 
uchar b; 
};

まとめ

如何でしたか。本稿では、プロジェクトの定義と設定項目を解説しました。最後までお読みいただき、ありがとうございました。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です