• 締切済み

visual studioについて

最近C言語を学び始めたのですがビルドが出来なくて困ってます。 どこが間違っているのか教えてください😭 #include <opencv2/core.hpp> //coreモジュールノヘッダーをインクルード #include <opencv2/highgui.hpp>// highgui モジュールのヘッダーをインクルード #include <iostream> int main(int argc, const char* argv[]) { // 幅 320px、高さ240px で赤色の画像データを生成 cv::Mat redImg(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 255)); // 画像表示用のウィンドウを生成 cv::namedWindow("red", cv::WINDOW_AUTOSIZE); // ウィンドウに画像を表示 cv::imshow("red", redImg); // キー入力を待機 cv::waitKey(0); // 作成したウィンドウを全て破棄 cv::destroyAllWindows(); return 0; }

みんなの回答

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.1

>どこが間違っているのか教えてください エラーメッセージは出ていないのでしょうか? エラーメッセージが出ている場合は、そのエラーメッセージをそっくりそのまま質問に書かれた方がよいです。 おそらくは https://www.atmarkit.co.jp/ait/articles/1606/01/news195_3.html の「5.1 サンプルコード」が元になってるのではないかと思うのですけど同じに見えますから、 今ある情報から思い当たるのはOpenCVパッケージをしていないとかくらいしか思いつきません。 また、これC言語ではなくC++言語ですよ。

関連するQ&A

  • visual studio 2010

    次のデータでUntitled 3.aviが読み込まれないんですけど、どうしてでしょうか??? これはネットからコピペしたデータの動画データだけ変更したやつなんですけど・・・ //--------------------------------------------------------- // 概要 : 動画(aviファイル)読み込み // File Name : LoadVideo.cpp // Library : OpenCV for MS-Windows beta5 // Auther : Yasuhiro Yoshimura // Date : Dec 26, 2005; 22:22 //--------------------------------------------------------- #include <cv.h> #include <cxcore.h> #include <highgui.h> #include <stdio.h> //読み込む動画ファイル名 char* filename="Untitled 3.avi"; //IplImage IplImage* src; int main(){ CvCapture* capture = NULL; int key; //キー入力 //指定したAVIファイルが見つからない場合 if(NULL==(capture = cvCaptureFromAVI(filename))){ fprintf(stderr,"指定のaviファイルが見つかりませんでした."); return -1; } //画像表示ウィンドウの準備 cvNamedWindow("Source Image", CV_WINDOW_AUTOSIZE); //画像表示ウィンドウの出現位置指定 cvMoveWindow("Source Image", 50, 50); //処理ループの開始 for(;;){ //AVIファイルからフレーム画像を取り出す if(NULL==(src=cvQueryFrame(capture))){ break; } //画像表示 cvShowImage("Source Image", src); //キー入力 key = cvWaitKey(10); //ESCキーを押すと終了 if(key==0x1b) break; } //解放 cvReleaseCapture(&capture); cvDestroyWindow("Source Image"); return 0; }

  • C++でOpenCV コンパイルでエラー

    超初心者です。 Visual C++2010 ExpressでOpenCVを使おうとしています。 このページを参考にしています。 http://gihyo.jp/dev/feature/01/opencv/0002?page=2 プログラムは以下の通り。 #include <C:\Program Files (x86)\opencv\build\include\opencv\cv.h> #include <C:\Program Files (x86)\opencv\build\include\opencv\highgui.h> int main(int argc, char* argv[]) { IplImage* img; // 画像ファイルポインタの宣言 char imgfile[] = "lena.jpg"; // 読み込み画像ファイル名 // 画像の読み込み img = cvLoadImage(imgfile, CV_LOAD_IMAGE_COLOR); // 画像の表示 cvNamedWindow ("lena", CV_WINDOW_AUTOSIZE); cvShowImage ("lena", img); cvWaitKey (0); cvDestroyWindow("lena"); // 画像の解放 cvReleaseImage(&img); return 0; } コンパイルすると、以下のエラーメッセージが出ます。 1>------ ビルド開始: プロジェクト: try, 構成: Debug Win32 ------ 1> try.cpp 1>c:\program files (x86)\opencv\build\include\opencv\cv.h(63): fatal error C1083: include ファイルを開けません。'opencv2/core/core_c.h': No such file or directory ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== どのようにすれば通るのでしょうか? 教えてください。よろしくお願いします。

  • Windows7 64bit でOpenCV2.1を動かしたい

    Windows7 64bit でOpenCV2.1を動かしたい Windows7 64bit visualstadio2005 でopencv2.1を動かしたいのですがreleaseだと動くのにdebugだとうまく動きません。 ネットの入門ページを参照にして インクルードファイルに C:\OpenCV2.1\include ライブラリファイルに C:\OpenCV2.1\lib C:\OpenCV2.1\bin を追加しました。 プラットフォームはよくわからなかったのでwin32とx64の両方に入れてみました また、環境変数もインストールの時点できちんと入っていることは確認しました。 また、プロジェクトのプロパティ→リンカ→入力→追加依存のファイルにも 構成がdebugのときに cv210d.lib cxcore210d.lib cvaux210d.lib highgui210d.lib releaseのときに cv210.lib cxcore210.lib cvaux210.lib highgui210.lib としています。 また、コード部分に #include "cv.h"と入力してもエラーが出るので #include <C:\OpenCV2.1\include\opencv\cv.h> とすることで対応している状況です。 どうすればうまく動くようになるでしょうか? もしよろしければ回答お願いします

  • OpenCV2.2でのk-means法について

    プログラミング初心者です。 今回、OpenCV2.2を使って画像処理(クラスタリング)をk-means法で行うことになりました。 Visual C++で以下のサンプルコードをデバッグしてみたのですが実行できません。 #include "stdafx.h" #include "C:\\OpenCV2.2\\include\\opencv\\highgui.h" #include "C:\\OpenCV2.2\\include\\opencv\\cv.h" #include "opencv2\\opencv.hpp" using namespace cv; //int _tmain(int argc, _TCHAR* argv[]) int main(int argc , char **argv) { const int cluster_count = 10; /* number of cluster */ // (1)load a specified file as a 3-channel color image const char *imagename = argc > 1 ? argv[1] : "C:\Penguins.jpg"; Mat src_img = imread(imagename); if(!src_img.data) return -1; // (2)reshape the image to be a 1 column matrix Mat points; src_img.convertTo(points, CV_32FC3); points = points.reshape(3, src_img.rows*src_img.cols); // (3)run k-means clustering algorithm to segment pixels in RGB color space Mat_<int> clusters(points.size(), CV_32SC1); Mat centers; kmeans(points, cluster_count, clusters, cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0), 1, KMEANS_PP_CENTERS, &centers); // (4)make a each centroid represent all pixels in the cluster Mat dst_img(src_img.size(), src_img.type()); MatIterator_<Vec3f> itf = centers.begin<Vec3f>(); MatIterator_<Vec3b> itd = dst_img.begin<Vec3b>(), itd_end = dst_img.end<Vec3b>(); for(int i=0; itd != itd_end; ++itd, ++i) { Vec3f color = itf[clusters(1,i)]; (*itd)[0] = saturate_cast<uchar>(color[0]); (*itd)[1] = saturate_cast<uchar>(color[1]); (*itd)[2] = saturate_cast<uchar>(color[2]); } // (5)show source and destination image, and quit when any key pressed namedWindow("src_img", CV_WINDOW_AUTOSIZE); imshow("src_img", src_img); namedWindow("dst_img", CV_WINDOW_AUTOSIZE); imshow("dst_img", dst_img); waitKey(0); return 0; } デバッグすると、ウィンドウが一瞬だけ立ち上がってすぐに消えてしまいます。 最後に、 「プログラム '[2568] k-means1.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。」 のメッセージが残されています。 ソースにエラーがあるわけでもなさそうなので困っています。 何らかの対処法はあるのでしょうか?

  • OpenCVでのプログラミングについての質問です

    Visual Studio2013でOpenCVを使えるようにし、現在USBカメラの映像をキャプチャする簡単なプログラムを作っています。 今は、 #include <opencv2/opencv.hpp> #include <opencv2/opencv_lib.hpp> #include <ctype.h> void Mouse( int event, int x, int y, int flags ,void *param); //マウス宣言 int main( int argc, char **argv) { // カメラからのビデオキャプチャを初期化する CvCapture *videoCapture = cvCreateCameraCapture( 1 ); cvSetCaptureProperty(videoCapture,CV_CAP_PROP_FRAME_WIDTH,1920); cvSetCaptureProperty(videoCapture,CV_CAP_PROP_FRAME_HEIGHT,1080); if( videoCapture == NULL ) { return -1; } // ウィンドウを作成する char windowName[] = "キャプチャ"; cvNamedWindow( windowName, CV_WINDOW_NORMAL|CV_WINDOW_FREERATIO ); // 何かキーが押下されるまで、ループをくり返す while( cvWaitKey( 1 ) == -1 ) { // カメラから1フレーム取得する IplImage *image = cvQueryFrame( videoCapture ); // ウィンドウに画像を表示する cvShowImage( windowName, image ); cvSetMouseCallback(windowName, Mouse); //マウスのコールバック関数登録 } // ビデオキャプチャを解放する cvReleaseCapture( &videoCapture ); // ウィンドウを破棄する cvDestroyWindow( windowName ); return 0; } void Mouse( int event, int x, int y, int flags ,void *param = NULL) // コールバック関数 { switch(event) { case CV_EVENT_LBUTTONDOWN: std::cout << x << "," << y << "\n"; //マウスの左クリックがされたときにその座標を読み込む break; default: break; } } このように記述し、新しいウィンドウにキャプチャしている映像を取得し、そのウィンドウ上でクリックされた座標を取得する、というプログラムになっています。 これを、 「クリックされた周辺一定範囲の映像を拡大して表示する」 というものにしたいのですが、プログラミング経験が浅く、調べながらいろいろ試行錯誤しても上手く動くプログラムを書くことができません。 どなたかアドバイスをいただけないでしょうか?

  • opencvで画像上に丸を描画の方法

    opencv初心者です。 visualstudio2012 C++でopencvを動かすことはできているのですが、目的としてフルスクリーンに表示した画像の上に2点を丸でいいので表示したいのですが、画像しか表示されない、もしくは画像とは別のウィンドウで丸が表示される状態になっています。 // OpenCV2.4Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" //プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに // opencv2のあるフォルダ『C:\OpenCV\include』などを追加のこと #include "opencv2\opencv.hpp" #include <opencv2/core/core.hpp> #ifdef _DEBUG //Debugモードの場合 #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts243d.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video243d.lib") #else //Releaseモードの場合 #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts243.lib") #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video243.lib") #endif //int _tmain(int argc, _TCHAR* argv[]) int gazouhyouzi(){ //画像データの読込 IplImage* src_img = cvLoadImage("C:\\opencv\\samples\\c\\fruits.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if (src_img == NULL){ std::exit(0); } //処理後画像データの確保 // IplImage* dst_img = cvCreateImage(cvGetSize(src_img), src_img->depth, src_img->nChannels); //画像処理例(ガウシアンフィルタ) // cvSmooth(src_img, dst_img, CV_GAUSSIAN, 9); //表示ウィンドウの作成 cvNamedWindow("src",0); //srcというwindowをフルスクリーンに設定 cvSetWindowProperty("src",CV_WND_PROP_FULLSCREEN,CV_WINDOW_FULLSCREEN); //画像の表示 cvShowImage ("src", src_img); //キー入力待ち cvWaitKey (0); cv::Mat img = cv::Mat::zeros(500, 500, CV_8UC3); // 画像,円の中心座標,半径,色,線太さ,種類 cv::circle(img, cv::Point(100, 100), 20, cv::Scalar(200,0,0), -1, CV_AA); //画像データの解放 cvReleaseImage(&src_img); //全てのウィンドウの削除 cvDestroyAllWindows(); return 0; } とても見づらいとは思いますが間違っている部分の訂正をお願いしたく、投稿しました。 初心者なもので言葉の表現が間違っているかも知れませんが、よろしくおねがいします。 ちなみに上記のプログラムで実行すると、画像だけがフルスクリーンに表示されるだけです。

  • androidのNDKエラーで困っています。

    AndroidでNDKを使用しています。 さっそくですが、エラー文を載せます。 Caused by: java.lang.UnsatisfiedLinkError: set1d at com.example.hsv_conv.HsvTask.set1d(Native Method) at com.example.hsv_conv.HsvTask.doInBackground(HsvTask.java:85) at com.example.hsv_conv.HsvTask.doInBackground(HsvTask.java:1) です。 JNIの方のソースも載せます。 #include <jni.h> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv/cv.hpp> #include <vector> using namespace std; using namespace cv; extern "C" { JNIEXPORT void JNICALL Java_com_example_hsv_conv_copy(JNIEnv* env, jobject thiz, jlong srcaddr, jlong dstaddr, jlong maskaddr) { Mat* pMatsrc = (Mat*)srcaddr; Mat* pMatdst = (Mat*)dstaddr; Mat* pMatmask = (Mat*)maskaddr; //入力画像(src_img)のマスク領域を出力画像(dst_img)へコピーする cvZero(pMatdst); cvCopy(pMatsrc, pMatdst, pMatmask); } JNIEXPORT void JNICALL Java_com_example_hsv_conv_set1d(JNIEnv* env, jobject thiz, jlong lut, jint i, jint val1, jint val2, jint val3) { Mat* pLut = (Mat*)lut; // LUT設定 cvSet1D(pLut, i, Scalar(val1, val2, val3)); } } です。 下の関数set1dを呼び出した時にエラーが来てしまいます。 cygwinの方でビルドをした結果、エラーは出ませんでした。 ちゃんとoファイルもsoファイルも生成されています。 お気づきになりましたらご指南、宜しくお願いいたします。

    • ベストアンサー
    • Java
  • OpenCV2.0でView Morphing

    環境はVisual Studio 2008 Express, OpenCV2.0です。 サポートされない実験的な関数にあるビューモーフィング関数を使い、2枚の画像から中間の画像を生成し、ウインドウに表示させるプログラムを作りたいです。 このpdfファイル(http://www.hci.otago.ac.nz/downloads/ViewMorphing_full.pdf)内の「10. Appendix B - Image Morphing in OpenCV」という箇所にあるコードを、以下のような定型文で囲んでみたんですけど、コンパイル時に分からないエラーが沢山出てきて解決できずに困っています。 どこか根本的な部分が抜けていて間違っているような気がするので、あらかじめ必要な宣言が抜けているとか、間違っていることに気づいた方がいらっしゃれば何でもいいので教えてください。よろしくお願いします。 #include <cv.h> #include <highgui.h> #include <cvaux.h> #pragma comment(lib, "cv200.lib") #pragma comment(lib, "highgui200.lib") #pragma comment(lib, "cvaux200.lib") int main(int argc, char** argv[]) { IplImage* morphedImage; IplImage* leftImage; IplImage* rightImage; cvNamedWindow("出力画像"); leftImage = cvLoadImage("left.jpg"); rightImage = cvLoadImage("right.jpg"); //------------------------------------------- ここに処理を入れる //------------------------------------------- // 表示ウインドウに画像を表示 cvShowImage("出力画像", _morphedImage); // キー入力待機 cvWaitKey(0); //表示ウインドウの破棄 cvDestroyWindow("出力画像"); cvReleaseImage(&leftImage); cvReleaseImage(&rightImage); cvReleaseImage(&morphedImage); //画像領域の解放 return 0; }

  • VisualStudio C++の初期設定で困っています。

    Visual Studio C++でOpenCVを使って、画像処理系のプログラムの練習をしています。 家のパソコンは初期のvistaを使っていてそこでは出来たんですが、 2台目のWindows7搭載型のノートではエラーが出て進みません。 エラー内容は fatal error LNK1104:ファイル'highgui.h'を開くことができません。 とでます。 ソースは #include "highgui.h" #include "cv.h" int main(int argc, char** argv){ cvNamedWindow("sample"); IplImage* src = cvLoadImage("sample.jpg"); cvShowImage("sample",src); cvReleaseImage( &src ); cvDestroyWindow("sample"); } 開発環境が7の64ビットに変わったからっていうのもあるのかと思っていますが、よくわかりません。エラーの内容で検索をかけてやってみたのですが、いまいちわからなかったので質問させてもらいました。よろしくお願いします。

  • Opencvで質問

     Opencv初心者です。  今日opencvとVC++2010を設定して今練習中なのですが   #include <stdexcept>   #include <opencv/cv.h>   #include <opencv/highgui.h>   int main (int argc, char* argv[]){   const char *fileName = "C:\\Program Files\\OpenCV2.3.1\\samples\\c\\lena.jpg";   const char *windowName = "lena";   ::IplImage* img = ::cvLoadImage(fileName);   ::cvNamedWindow(windowName);   ::cvShowImage(windowName,img);   ::cvWaitKey();   ::cvDestroyWindow(windowName);   ::cvReleaseImage(&img);   }  と言うサンプルをビルドしたら  1>------ ビルド開始: プロジェクト: 画像処理練習, 構成: Debug Win32 ------  1>LINK : fatal error LNK1104: ファイル 'opencv_core231.lib' を開くことができません。  ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========  エラーが出てしまい先に進めません。  もしかしたら他に設定が悪いのでしょうか?  インストールもC:\Program Files\OpenCV2.3.1に名前も変えインストールしました。  ttp://shiotani.cn/20110904vc2010opencv.html  ここを参考にさせていただきました。 よろしくお願いします。

専門家に質問してみよう