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

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

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

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

C++

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

Q&A

2回答

3569閲覧

OpenCV3.4.1で画像の2値化を行いたい

aiueoaiueoaiue

総合スコア94

OpenCV

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

C++

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

0グッド

0クリップ

投稿2018/06/15 16:36

###実現したい事
visual studioでOpenCVを用いて画像を2値化するC++のソースを書いたのですが、エラーが出てうまくいきません。エラーの内容的に冒頭のincludeのところをまちがっているのかなと思うのですが、どう修正すればよいか分かりません。分かる方回答お願いします。
###エラー文

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 警告 C4005 'CV_EXT': マクロが再定義されました。 Black \black\black.cpp 7 エラー (アクティブ) E0130 '{' が必要です Black \Black\Black.cpp 17 エラー (アクティブ) E1696 ソース ファイルを開けません "opencv2/core/core.hpp" Black \Black\Black.cpp 11 エラー (アクティブ) E1696 ソース ファイルを開けません "opencv2/highgui/highgui.hpp" Black \Black\Black.cpp 12 エラー C1010 プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? Black \black\black.cpp 61 エラー (アクティブ) E0020 識別子 "adaptiveThreshold" が定義されていません Black \Black\Black\Black.cpp 38 エラー (アクティブ) E0020 識別子 "ADAPTIVE_THRESH_GAUSSIAN_C" が定義されていません Black \Black\Black\Black.cpp 38 エラー (アクティブ) E0020 識別子 "cvtColor" が定義されていません Black \Black\Black\Black.cpp 26 エラー (アクティブ) E0020 識別子 "CV_BGR2GRAY" が定義されていません Black \Black\Black\Black.cpp 26 エラー (アクティブ) E0020 識別子 "CV_WINDOW_AUTOSIZE" が定義されていません Black \Black\Black\Black.cpp 41 エラー (アクティブ) E0020 識別子 "imread" が定義されていません Black \Black\Black\Black.cpp 22 エラー (アクティブ) E0020 識別子 "imshow" が定義されていません Black \Black\Black\Black.cpp 48 エラー (アクティブ) E0020 識別子 "Mat" が定義されていません Black \Black\Black\Black.cpp 22 エラー (アクティブ) E0020 識別子 "Mat" が定義されていません Black \Black\Black\Black.cpp 25 エラー (アクティブ) E0020 識別子 "Mat" が定義されていません Black \Black\Black\Black.cpp 29 エラー (アクティブ) E0020 識別子 "Mat" が定義されていません Black \Black\Black\Black.cpp 37 エラー (アクティブ) E0020 識別子 "namedWindow" が定義されていません Black \Black\Black\Black.cpp 41 エラー (アクティブ) E0020 識別子 "threshold" が定義されていません Black \Black\Black\Black.cpp 30 エラー (アクティブ) E0020 識別子 "THRESH_BINARY" が定義されていません Black \Black\Black\Black.cpp 30 エラー (アクティブ) E0020 識別子 "THRESH_BINARY_INV" が定義されていません Black \Black\Black\Black.cpp 31 エラー (アクティブ) E0020 識別子 "THRESH_OTSU" が定義されていません Black \Black\Black\Black.cpp 30 エラー (アクティブ) E0020 識別子 "THRESH_TOZERO" が定義されていません Black \Black\Black\Black.cpp 33 エラー (アクティブ) E0020 識別子 "THRESH_TOZERO_INV" が定義されていません Black \Black\Black\Black.cpp 34 エラー (アクティブ) E0020 識別子 "THRESH_TRUNC" が定義されていません Black \Black\Black\Black.cpp 32 エラー (アクティブ) E0020 識別子 "waitKey" が定義されていません Black \Black\Black\Black.cpp 55

###ソースコード

C++

1// Black.cpp : アプリケーションのエントリ ポイントを定義します。 2// 3 4#ifdef _DEBUG 5#define CV_EXT "d.lib" 6#else 7#define CV_EXT ".lib" 8#endif 9#pragma comment(lib, "opencv_world341" CV_EXT) 10 11#include <opencv2/core/core.hpp> 12#include <opencv2/highgui/highgui.hpp> 13 14 15int main(int argc, char *argv[]) 16 17 using namespace cv; 18 19 int main(int argc, char **argv){ 20 // (1)load a specified file and convert it into grayscale image 21 const char *imagename = argc > 1 ? argv[1] : "IMG_E2392"; 22 Mat src_img = imread(imagename); 23 if (!src_img.data) 24 return -1; 25 Mat gray_img; 26 cvtColor(src_img, gray_img, CV_BGR2GRAY); 27 28 // (2)apply a fixed-level threshold to each pixel 29 Mat bin_img, bininv_img, trunc_img, tozero_img, tozeroinv_img; 30 threshold(gray_img, bin_img, 0, 255, THRESH_BINARY | THRESH_OTSU); 31 threshold(gray_img, bininv_img, 0, 255, THRESH_BINARY_INV | THRESH_OTSU); 32 threshold(gray_img, trunc_img, 0, 255, THRESH_TRUNC | THRESH_OTSU); 33 threshold(gray_img, tozero_img, 0, 255, THRESH_TOZERO | THRESH_OTSU); 34 threshold(gray_img, tozeroinv_img, 0, 255, THRESH_TOZERO_INV | THRESH_OTSU); 35 36 // (3)apply an adaptive threshold to a grayscale image 37 Mat adaptive_img; 38 adaptiveThreshold(gray_img, adaptive_img, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 7, 8); 39 40 // (4)show source and destination images 41 namedWindow("Source", CV_WINDOW_AUTOSIZE); 42 namedWindow("Binary", CV_WINDOW_AUTOSIZE); 43 namedWindow("Binary Inv", CV_WINDOW_AUTOSIZE); 44 namedWindow("Trunc", CV_WINDOW_AUTOSIZE); 45 namedWindow("ToZero", CV_WINDOW_AUTOSIZE); 46 namedWindow("ToZero Inv", CV_WINDOW_AUTOSIZE); 47 namedWindow("Adaptive", CV_WINDOW_AUTOSIZE); 48 imshow("Source", src_img); 49 imshow("Binary", bin_img); 50 imshow("Binary Inv", bininv_img); 51 imshow("Trunc", trunc_img); 52 imshow("ToZero", tozero_img); 53 imshow("ToZero Inv", tozeroinv_img); 54 imshow("Adaptive", adaptive_img); 55 waitKey(0); 56 57 58 return 0; 59}

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

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

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

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

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

guest

回答2

0

C++

1int main(int argc, char *argv[]) 2 3 using namespace cv; 4 5 int main(int argc, char **argv){ 6 ... 7}

これ↑ を こう↓ 直せ。

C++

1using namespace cv; 2 3int main(int argc, char **argv) { 4 ... 5}

投稿2018/06/15 22:39

episteme

総合スコア16614

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

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

0

まずはエラーコードの理解から。

c++

1int main(int argc, char *argv[]) 2

c++

1 const char *imagename = argc > 1 ? argv[1] : "IMG_E2392"; 2

の間というか、関数は

c++

1関数名(引数群) 2{ 3   処理; 4 5}

としないと。
他のエラーはこれが起因しているものも。
まずここを直して再度コンパイルしてみてください。

投稿2018/06/15 17:43

MasahikoHirata

総合スコア3747

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

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

MasahikoHirata

2018/06/16 03:42

episteme殿の回答を見て、見落としていた。 きっと先の部分はプロトタイピングのつもりだったのでしょう。 深夜の回答でしたのですみません。
episteme

2018/06/16 04:44

プロトタイプのつもりだったらケツに ; 追加するだけで解決っスね。 # フツーmainはプロトタイプ宣言せんぢゃろけど
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問