0

Visual Studio 2010 Windows フォーム アプリケーション C++ で opencv を使用しています。ただし、組み込み関数の呼び出しは許可されません。次のようなエラーが発生します

エラー 1 エラー C3861: 'cvCvtColor': 識別子が見つかりません c:\users\ayesha\documents\visual studio 2010\projects\abc\abc\Form1.h 140 1 abc

エラー 2 エラー C3861: 'cvCvtPixToPlane': 識別子が見つかりません c:\users\ayesha\documents\visual studio 2010\projects\abc\abc\Form1.h 146 1 abc

次のヘッダーを追加しました

#include "highgui.h"
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/core/core.hpp"      
#include "opencv2/highgui/highgui.hpp"

誰が私が間違っているのか教えてください。

4

3 に答える 3

3

残念ながら、OP は使用している OpenCV のバージョンを明らかにしていません。

OpenCV 3.0 を使用している場合は、cvSplit()代わりに を使用しcvCvtPixToPlane()ます。

cvCvtColor()必要なヘッダー ファイルをプロジェクトに追加した場合、OpenCV 3.0 で動作します。

最後に、プロジェクトで必要なファイルを見逃さないようにするには、コードを#include <opencv2\opencv.hpp>.

于 2015-09-06T10:54:40.777 に答える
0

cvCvtColorは OpenCV の C API 関数ですが、C++ を使用するつもりです。問題を解決するには、次の 2 つの方法があります。

1) (推奨) C++ API を使用するようにソース コードを変更します。などの代わりcv::MatCvArr、のcv::cvtColor代わりに使用する必要があります。cvCvtColor

2) ソース コードのこのような変更はかなり複雑になる可能性があるため、C ヘッダーを含めることで C API を引き続き使用できます。

#include "opencv2/imgproc/imgproc_c.h" 
#include "opencv2/core/core_c.h"      
#include "opencv2/highgui/highgui_c.h"

C++ (*.hpp) の代わりに

于 2013-10-16T10:39:37.033 に答える
0

あなたが言及したエラーは、リンカーエラーだと思います。opencv_highgui23# である同一のライブラリをターゲットとする 2 つのヘッダー highgui.hpp と highgui.h を含めているためです。ヘッダーを 1 つだけ含めます。

于 2013-10-16T10:52:30.670 に答える