質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1945閲覧

C++6.0 opencv2.3.1 USBカメラ画像取得

Tatsuk

総合スコア11

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/11/01 10:19

前提・実現したいこと

Microsoft Visual C++ 6.0上でUSBカメラの映像を表示したいです。
その為にopencv1.0を導入してみたところ、現在利用しようとしているUSBカメラに対応していないのか画面が真っ暗な状態になってしまい、断念。
次に2.3.1を導入してソースコードに記述してあるプログラムをビルドしようとしたところ、以下のエラーメッセージが表示されました。C言語について初学者であり、どう改善を行えば良いか分からなかった為、ここで質問させて頂きました。

発生している問題・エラーメッセージ

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(78) : error C2039: 'ptrdiff_t' : 'std' のメンバではありません。

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(78) : error C2868: 'ptrdiff_t' : using 宣言の不正な構文です、限定名が必要です。

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(357) : error C2535: '__thiscall cv::Allocator<U>::cv::Allocator<U>(const class cv::Allocator<U> &)' : メンバ関数は、すでに定義または宣言されています。

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(355) : 'Allocator<_Tp>::Allocator<_Tp>' の宣言を確認してください。 c:\opencv2.3.1\build\include\opencv2\core\core.hpp(373) : コンパイルされたクラスのテンプレートのインスタンス化 'cv::Allocator<_Tp>' の参照を確認してください

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(396) : error C2989: 'DataDepth<class ?? ::_Tp *>' : このテンプレート クラスはすでに非テンプレート クラスとして定義されています。

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(396) : error C2988: 認識できないテンプレートの宣言または定義です。

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(495) : fatal error C1903: 直前のエラーを修復できません; コンパイルを中止します。

c:\opencv2.3.1\build\include\opencv2\core\core.hpp(516) : コンパイルされたクラスのテンプレートのインスタンス化 'cv::Matx<_Tp,m,n>' の参照を確認してください

cl.exe の実行エラー

該当のソースコード

C++

1 2#include <stdio.h> 3#include <highgui.h> 4 5int main() 6{ 7 CvCapture *videoCapture = cvCreateCameraCapture( 1 ); 8 if( videoCapture == NULL ) 9 { 10 return -1; 11 } 12 13 14 char windowName[] = "camera"; 15 cvNamedWindow( windowName, CV_WINDOW_AUTOSIZE ); 16 17 while( cvWaitKey( 1 ) == -1 ) 18 { 19 IplImage *image = cvQueryFrame( videoCapture ); 20 21 cvShowImage( windowName, image ); 22 } 23 24 25 cvReleaseCapture( &videoCapture ); 26 27 cvDestroyWindow( windowName ); 28 29 return 0; 30}

試したこと

インクルードファイルに追加したもの
C:\OPENCV2.3.1\BUILD\INCLUDE\OPENCV
C:\OPENCV2.3.1\BUILD\INCLUDE
ライブラリファイルに追加したもの
C:\OPENCV2.3.1\BUILD\X86\VC10\LIB
ライブラリモジュールに追加したもの
opencv_highgui231d.lib
opencv_highgui231.lib

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2019/11/01 11:13 編集

そんなに旧いコンパイラを使う理由が知りたい。
Tatsuk

2019/11/01 11:50

現在研究室で遠隔制御関連の研究を行っており、そこで実験装置をC++6.0上で作成を行ったプログラムで動かしています。 新しいコンパイラの導入も視野には入れていたのですが、今まで研究過程で追加されてきたサーバー側とクライアント側両方のコードが多く、私自身も最近C言語を学び始めたばかりである為、理解し新しいコンパイラ用に書き直すのが難しいです。 そこでクライアント側のプログラムに追記する形で現状は進めたいと思っているため、C++6.0上でopencvを使いたいと考えています。
episteme

2019/11/01 13:47

VC6ゆーたら20年前のコンパイラ、いまどきのコードがコンパイルできるとは思えないんよなー...
tiitoi

2019/11/01 15:23

コンパイラが古すぎてビルドが通らないのだと思います。 Visual Studio 2019 は非営利の研究目的であれば、無料で使えるので入れてみてはどうでしょうか。 https://docs.microsoft.com/ja-jp/visualstudio/install/install-visual-studio?view=vs-2019 > 新しいコンパイラ用に書き直すのが難しいです。 基本的には C++03 とかの古いコードもコンパイルできると思います。
yumetodo

2019/11/02 03:18

やっぱり新しいコンパイラを使えとしか・・・。そうしたらOpenCV2.3.1とかいう古いバージョンじゃなくてOpenCV4系を使えるはず。
Tatsuk

2019/11/02 03:55

episteme様、tiitoi様、yumetodo様、アドバイスありがとうございます。いずれは新しいコンパイラの導入をしなくてはならないと考えていたので、その踏ん切りがつきました。今後質問する事が多々あると思いますので、機会があればまたご教授頂けると幸いです。
guest

回答1

0

自己解決

新しいコンパイラの導入。

投稿2019/11/02 03:57

Tatsuk

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問