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

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

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

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

C++

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

Q&A

解決済

1回答

1223閲覧

openCVのGaussianBlurを使うと「C2059 構文エラー:'定数'」のエラーが生じる

oknd1

総合スコア17

OpenCV

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

C++

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

0グッド

0クリップ

投稿2017/07/20 02:10

###前提・実現したいこと
openCVによる画像中の輝点位置座標検出
そのためのガウシアンブラーの使用

###発生している問題・エラーメッセージ
openCVのコマンドに対してエラーが生じてしまっています。

C2059 構文エラー:'定数'

のエラーメッセージの解決法がわかりません。

###該当のソースコード

C++

1#ifdef _DEBUG 2#define CV_EXT "d.lib" 3#else 4#define CV_EXT ".lib" 5#endif 6#pragma comment(lib, "opencv_core320" CV_EXT) 7#pragma comment(lib, "opencv_highgui320" CV_EXT) 8#pragma comment(lib, "opencv_imgproc320" CV_EXT) 9#pragma comment(lib, "opencv_imgcodecs320" CV_EXT) 10 11#include "opencv2/core/core.hpp" 12#include <opencv2/highgui/highgui.hpp> 13 14#include <iostream> 15#include <opencv2/opencv.hpp> 16using namespace std; 17using namespace cv; 18 19int main(int argc, char *argv[]) 20{ 21 Mat im = imread("Image.png", 0); 22 23 Mat disc = getStructuringElement(MORPH_ELLIPSE, Size(2, 2)); 24 Mat fil; 25 Mat thre; 26 Mat er; 27 28 void GaussianBlur(Mat im, Mat fil, Size(3,3), 0, 0); 29 void adaptiveThreshold(Mat fil, Mat thre, 1, int 47, double -0.41 ); 30 void Erode(Mat thre, Mat er, Mat disc); 31 imshow("Show image", fil); 32 waitKey(0); 33 return 0; 34}

###試したこと

void adaptiveThreshold(Mat fil, Mat thre, 1, int 47, double -0.41 ); void Erode(Mat thre, Mat er, Mat disc); imshow("Show image", fil); waitKey(0); return 0;

の部分をコメントアウトしてGaussianBlurのみで試してみましたが通りませんでした。

C2059 構文エラー:'定数'

のエラーが発生します。
試しに引数をMat im, Mat filのみにして

void GaussianBlur(Mat im, Mat fil);

ビルドは通りましたがimshowでfilがちゃんと表示されませんでした。
また, imやfilはすでに宣言しているので引数のMatはいらないかと思って消去すると

C2182 'GaussianBlur': 'void'型が不適切に使用されています。 C2440 '初期化中': 'initializer list'から'int'に変換できません。

というエラーメッセージが生じます。
ちなみにGaussianBlurもコメントアウトしてimshowでimを表示させると問題なく表示されます。
GaussianBlurなどのopenCVのコマンドの使い方がよくわかっておらず、自分の力で解決が難しそうなのでよければ解決策をご教示いただければ幸いです。

###補足情報(言語/FW/ツール等のバージョンなど)
OS:Windows 10 Home 64 bit operating system
Visual Studio 2017 community
openCV3.2.0

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

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

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

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

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

yohhoy

2017/07/20 02:41

OpenCVはあまり関係ありません。一度C++言語(C言語)の基本構文をおさらいされたほうがよいと思います。
oknd1

2017/07/20 04:38

yohhoy様 ありがとうございます。その必要性を切に感じています。急にC++での画像処理が必要となったので手探りでやっておりますが時間を見つけて基本を抑えようと思います。
guest

回答1

0

ベストアンサー

C++

1 void GaussianBlur(Mat im, Mat fil, Size(3,3), 0, 0); 2 void adaptiveThreshold(Mat fil, Mat thre, 1, int 47, double -0.41 ); 3 void Erode(Mat thre, Mat er, Mat disc);

これでちゃんとコンパイルされるわけがなく、

C++

1 GaussianBlur(im, fil, Size(3,3), 0, 0); 2 adaptiveThreshold(fil, thre, 1, 47, -0.41 ); 3 Erode(thre, er, disc);

ではなかろーかと。

投稿2017/07/20 02:26

episteme

総合スコア16614

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

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

oknd1

2017/07/20 02:53

episteme様 コンパイルできました。初歩的な間違いをしていたようです。 助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問