変数の名前を入力するだけで、Matlabのように変数の値をチェックしたいだけです。私はcout << img_names;
コードの1行をサンプルオープンソースコードに挿入しましたが、Visual Studioのエラーリストにはno operator "<<" matches these operands
があります。しかし、私はサンプルコードの他の部分でうまく使用されているcoutを参照してください。以下は、COUTが挿入されているサンプルコードの最初の部分である:C++でベクトルの値を表示/チェックする方法
#include <iostream>
#include <fstream>
#include <string>
#include "opencv2/opencv_modules.hpp"
#include <opencv2/core/utility.hpp>
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/stitching/detail/autocalib.hpp"
#include "opencv2/stitching/detail/blenders.hpp"
#include "opencv2/stitching/detail/timelapsers.hpp"
#include "opencv2/stitching/detail/camera.hpp"
#include "opencv2/stitching/detail/exposure_compensate.hpp"
#include "opencv2/stitching/detail/matchers.hpp"
#include "opencv2/stitching/detail/motion_estimators.hpp"
#include "opencv2/stitching/detail/seam_finders.hpp"
#include "opencv2/stitching/detail/util.hpp"
#include "opencv2/stitching/detail/warpers.hpp"
#include "opencv2/stitching/warpers.hpp"
using namespace std;
using namespace cv;
using namespace cv::detail;
static void printUsage(){ ... }
// Default command line args
vector<String> img_names;
bool preview = false;
bool try_cuda = false;
double work_megapix = 0.6;
double seam_megapix = 0.1;
double compose_megapix = -1;
float conf_thresh = 1.f;
string features_type = "surf";
string ba_cost_func = "ray";
string ba_refine_mask = "xxxxx";
bool do_wave_correct = true;
WaveCorrectKind wave_correct = detail::WAVE_CORRECT_HORIZ;
bool save_graph = false;
std::string save_graph_to;
string warp_type = "spherical";
int expos_comp_type = ExposureCompensator::GAIN_BLOCKS;
float match_conf = 0.3f;
string seam_find_type = "gc_color";
int blend_type = Blender::MULTI_BAND;
int timelapse_type = Timelapser::AS_IS;
float blend_strength = 5;
string result_name = "result.jpg";
bool timelapse = false;
int range_width = -1;
static int parseCmdArgs(int argc, char** argv){ ... }
int main(int argc, char* argv[])
{
#if ENABLE_LOG
int64 app_start_time = getTickCount();
#endif
#if 0
cv::setBreakOnError(true);
#endif
int retval = parseCmdArgs(argc, argv);
cout << img_names;
if (retval)
return retval;
much more code continues...
にはどうすれば変数の値を取得するために、適切coutを使用するのですか簡単な方法はありますか?
この機能は、オペレータのオーバーロードと呼ばれています(それを見てください!あなたは多くの良い答えを得るでしょう)。 '<<"演算子は2つの引数をとります。最初のものは、使用されているストリーム(ほぼ確実にstd :: ostream)への参照を取ります.2番目は、印刷したいオブジェクトへの定数参照です。ここではあまり詳しく説明しません。しかし多態型を使用する場合は、そのクラスのprintメソッドだけを呼び出すことができます。そして、すべてのクラスに対して '<<'演算子を定義する必要はなく、より良いカプセル化を提供します。これはアクセス可能なクラス( 'vector'ではなく)にのみ適用されます。 – patrik
Tq! D – SK90