<環境>
- Windows10 64bit
- visual studio 2015
- cuda9.1(opencvのgpuモジュールの為にインストールしました。)
- opencv2.4.6
GPU高速画像処理という本を参考にコンパイルしようとしているのですが構文に関してのエラーがでます。
参考書に付属されているCDROMに入っていたプログラムをそのままコピペして貼り付け、ヘッダファイルに関してのエラーもないように見えるのでエラーの原因は構文ということはなんとなくわかるのですが、
プログラムが古いせいでエラーが出ているのかもしれないとも思っています。
初版が2013年のものなのでエラーが出てしまうのも仕方ないのですがせっかく買ったのでエラーを解決したいと思います。ただ、答えを教えられても私の勉強にならないのでヒントやアドバイスなどを頂ければと思います。
コンパイルしようとしたプログラムはこちらです。GPUのプログラムでありますが拡張子はcuではなく参考書ではcppと書いてありましたので、cuではなくcppとしました。
またデバッグではなくリリースで、かつx64でコンパイルしました
// // dispGrayscale [動画ファイル名] // // (c)Copyright Spacesoft corp., 2013 rights reserved. // Hiro KITAYAMA //-------------------------------------------------------------------------- #include <opencv2/opencv.hpp> #include <opencv2/gpu/gpu.hpp> #include <ocvlibs.h> using namespace cv; //-------------------------------------------------------------------------- //main int main(int argc, char* argv[]) { try { int wait = 1; int numOfGpu = gpu::getCudaEnabledDeviceCount(); if (numOfGpu <= 0) throw ("no Gpu available."); VideoCapture capture; if (argc == 2) { capture = VideoCapture(argv[1]); wait = 33; } else capture = VideoCapture(0); const char* wName = "dst"; Mat src, dst; gpu::GpuMat gpuSrc, gpuDst; namedWindow(wName, CV_WINDOW_AUTOSIZE); while (true) { capture >> src; if (src.empty()) break; gpuSrc.upload(src); gpu::cvtColor(gpuSrc, gpuDst, COLOR_RGB2GRAY); gpuDst.download(dst); imshow(wName, dst); if (waitKey(wait) >= 0) break; } } catch (const char* str) { std::cout << str << std::endl; } catch (const cv::Exception* ex) { std::cout << "Error: " << ex->what() << std::endl; } return 0; }
ヘッダファイルocvlibs.hは本に付属された特有のもののようなのでこちらに載せます。
//-------------------------------------------------------------------------- #ifdef _DEBUG //Debugモードの場合 #pragma comment(lib,"opencv_calib3d246d.lib") #pragma comment(lib,"opencv_core246d.lib") #pragma comment(lib,"opencv_contrib246d.lib") #pragma comment(lib,"opencv_features2d246d.lib") #pragma comment(lib,"opencv_flann246d.lib") #pragma comment(lib,"opencv_gpu246d.lib") #pragma comment(lib,"opencv_haartraining_engined.lib") #pragma comment(lib,"opencv_highgui246d.lib") #pragma comment(lib,"opencv_imgproc246d.lib") #pragma comment(lib,"opencv_legacy246d.lib") #pragma comment(lib,"opencv_ml246d.lib") #pragma comment(lib,"opencv_objdetect246d.lib") #pragma comment(lib,"opencv_ts246d.lib") #pragma comment(lib,"opencv_video246d.lib") #else //Releaseモードの場合 #pragma comment(lib,"opencv_calib3d246.lib") #pragma comment(lib,"opencv_core246.lib") #pragma comment(lib,"opencv_contrib246.lib") #pragma comment(lib,"opencv_features2d246.lib") #pragma comment(lib,"opencv_flann246.lib") #pragma comment(lib,"opencv_gpu246.lib") #pragma comment(lib,"opencv_haartraining_engine.lib") #pragma comment(lib,"opencv_highgui246.lib") #pragma comment(lib,"opencv_imgproc246.lib") #pragma comment(lib,"opencv_legacy246.lib") #pragma comment(lib,"opencv_ml246.lib") #pragma comment(lib,"opencv_objdetect246.lib") #pragma comment(lib,"opencv_ts246.lib") #pragma comment(lib,"opencv_video246.lib") #endif
visual studioでのエラーです。
https://pastebin.com/bsWfhkJC
余談ではありますがコマンドプロンプトの方でnvccを用いて同じように行ったところほぼ同じエラーが出ました。
コマンドプロンプトでnvccのコマンドでのエラーはこちらです。
https://pastebin.com/T9A8w9Ur
編集内容
nvccを使っていましたが私の勘違いで使う必要はなかったです。プログラムの拡張子がcppなので
GCCとMinGWを使ってできるかと考え行ったのですが、https://pastebin.com/Lgf2L4E2のようなエラーが出てしまい何が何だかといった状態です。visual studioでは実行ファイルは得られましたが、実行するとエラーが出てしまうのでまだ解決できていません。
編集 3/30
あの後ちゃんとした実行ファイルを出力しようともう一度最初からビルドを試したのですが、全くうまくいかず困り果てています。警告はすべて消えたのですが、構文エラーが出てきてしまい、何が問題なのかさっぱりわかりません。文字数の影響で別のサイトにエラーを書かせていただきました。お手数をおかけしますがどうかよろしくお願いいたします。
https://pastebin.com/FhdUMCaD
回答2件
あなたの回答
tips
プレビュー