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

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

ただいまの
回答率

90.84%

  • C++

    3020questions

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

  • Eclipse

    1528questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • OpenCV

    869questions

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

Eclipse3.8にてC++でOpenCVを使いたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 81

LisaXXXX

score 3

Eclipse3.8にてC++でOpenCVを使いたいです。
画像の表示はできたのですが、
グレースケール化→2値化処理
ができません。
Eclipseの設定が間違っているのか、使えない関数が多く、困っています。
よろしくお願いいたします。

include <iostream>

include <cv.h>

include <highgui.h>

include <opencv2/core/core.hpp>

include <opencv2/highgui/highgui.hpp>

include "opencv2/opencv.hpp"

using namespace std;

int main() {

cv::Mat input_img = cv::imread("/home/LisaXXXX/デスクトップ/test5/0.jpg");
cv::Mat gray_img;
cv::Mat bin_img;

cv::threshold(gray_img, bin_img, 0, 255, THRESH_BINARY|THRESH_OTSU);

cv::cvtColor(input_img, gray_img, CV_BGR2GRAY);

imshow("gray", gray_img);
imshow("binary", bin_img)
cv::waitKey(0);
return 0;

}

エラーコード
make all 
Building file: ../src/test.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/local/include/opencv2 -I/usr/local/include/opencv -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.d" -o "src/test.o" "../src/test.cpp"
../src/test.cpp: In function ‘int main()’:
../src/test.cpp:57:43: error: ‘THRESH_BINARY’ was not declared in this scope
cv::threshold(gray_img, bin_img, 0, 255, THRESH_BINARY|THRESH_OTSU);
^
../src/test.cpp:57:43: note: suggested alternative:
In file included from /usr/local/include/opencv2/opencv.hpp:47:0,
from ../src/test.cpp:14:
/usr/local/include/opencv2/imgproc.hpp:311:5: note:   ‘THRESH_BINARY’
THRESH_BINARY     = 0, //!< \f[\texttt{dst} (x,y) =  \fork{\texttt{maxval}}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{otherwise}\f]
^
../src/test.cpp:57:57: error: ‘THRESH_OTSU’ was not declared in this scope
cv::threshold(gray_img, bin_img, 0, 255, THRESH_BINARY|THRESH_OTSU);
^
../src/test.cpp:57:57: note: suggested alternative:
In file included from /usr/local/include/opencv2/opencv.hpp:47:0,
from ../src/test.cpp:14:
/usr/local/include/opencv2/imgproc.hpp:317:5: note:   ‘THRESH_OTSU’
THRESH_OTSU       = 8, //!< flag, use Otsu algorithm to choose the optimal threshold value
^
src/subdir.mk:18: ターゲット 'src/test.o' のレシピで失敗しました
make: *** [src/test.o] エラー 1

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

error: ‘THRESH_BINARY’ was not declared in this scope

これも先ほどと同じです。

定数についても cv::THRESH_BINARY と名前空間を指定しなければいけません。

おそらくインターネットの例では、using namespace cv; を宣言していることが多いため、名前空間を明示していないことが多いのでしょう。
なので、逆に、全部cv::を取っ払って、using namespace してしまうのも手です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/01 17:01

    度々、ありがとうございます。
    名前空間を付け忘れていました。。。
    using namespaceに変更しました。

    THRESH_BINARYでエラーは出なくなりましたが、それでもビルドは通りません。。。

    make all
    Building file: ../src/test.cpp
    Invoking: GCC C++ Compiler
    g++ -I/usr/local/include/opencv2 -I/usr/local/include/opencv -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.d" -o "src/test.o" "../src/test.cpp"
    Finished building: ../src/test.cpp

    Building target: test
    Invoking: GCC C++ Linker
    g++ -L/usr/local/lib -o "test" ./src/test.o -lopencv_core -lopencv_imgcodecs -lopencv_highgui
    /usr/bin/ld: ./src/test.o: シンボル '_ZN2cv9thresholdERKNS_11_InputArrayERKNS_12_OutputArrayEddi' への未定義参照です
    //usr/local/lib/libopencv_imgproc.so.3.1: error adding symbols: DSO missing from command line
    makefile:45: ターゲット 'test' のレシピで失敗しました
    collect2: error: ld returned 1 exit status
    make: *** [test] エラー 1

    インクルードが不足しているとかでしょうか。。。?

    キャンセル

  • 2018/06/01 17:08

    リンクの指定が不足しているようですね。
    -lopencv_imgproc を足せば行けそうです。

    キャンセル

  • 2018/06/01 17:25

    ググッてみましたが、リンクの指定方法がわかりません;
    度々、失礼いたします・・・;

    キャンセル

  • 2018/06/01 17:29

    Eclipseのプロジェクトの設定のどこかに、ライブラリのリンクを指定する箇所があるはずです。
    (すみません、普段Eclipseは使っていないので具体的にどこ、とは言えません。)

    http://coffeegkgk.hatenablog.com/entry/2015/05/23/174751 あたり参考になりますでしょうか。

    キャンセル

  • 2018/06/01 17:33

    ありがとうございます。

    opencv_imgprocをライブラリに追加したら、ビルドは通りました。

    実行すると、

    OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/kajiyar58/opencv-3.1.0/modules/highgui/src/window.cpp, line 281
    terminate called after throwing an instance of 'cv::Exception'
    what(): /home/LisaXXXX/opencv-3.1.0/modules/highgui/src/window.cpp:281: error: (-215) size.width>0 && size.height>0 in function imshow

    とエラーが返ってきましたが、これは別の問題な気がします・・・。

    キャンセル

  • 2018/06/01 17:37

    > error: (-215) size.width>0 && size.height>0 in function imshow

    そうですね、別の問題です。
    画像の読み込みに失敗しているようです。
    「デスクトップ」など日本語が含まれるパスにモノを置くと、文字コードがあーだこーだうるさいため、ローマ字だけで形成される場所に移動してみてはいかがでしょう。

    キャンセル

  • 2018/06/01 17:39

    ありがとうございます。

    たしかにファイルの場所が良くないですね・・・

    ちなみに、ソースコードを見なおしたところ、グレースケール前に2値化関数を書いてしまっていて、そのためのバグだったようです・・・

    お手数をおかけいたしました。。。。

    キャンセル

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

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    OpenCVのcv::VideoCapture::VideoCaptureというメソッドのソースのあ...

    デスクトップの映像をキャプチャしてOpenCVで解析することを目的としています。 そこで、cv::VideoCapture::VideoCaptureという関数を使うのですが、デ

  • 解決済

    Raspberry piでOpenCVを利用したい

    前提・実現したいこと Raspberry pi 2でOpenCV(2.4.0)を利用できるように設定を行っているのですが、コンパイルでエラーが発生しました。 全くの初心者で解決方法

  • 解決済

    opencv 動画 再生

    #include <stdio.h> #include <cv.h> #include <highgui.h> int main(int argc, char* argv[])

  • 解決済

    OpenCvSharp3で重心を求めたいです

    以下のように、ラベリングを実行するプログラムはできたのですが、ここから重心の座標や面積を求めるプログラムを作成したいです。どなたか、教えていただけますか? 最終的な目標としては

  • 解決済

    OpenCVにおける、色のオーバーフロー問題

    前提・実現したいこと 色に色を加算して、色の混合をしようとしています。Microsoft office付属のpicture managerの色の補正機能のようなことを、CUIにした

  • 解決済

    OpenCVを使った笑顔検出での問題

    前提・実現したいこと OpenCVで元からあるサンプルコード「smiledetect.cpp」を用いて笑顔検出のシステムを作っています。 検出機能を実装中に以下の問題が発生しました

  • 解決済

    リアルタイムエッジ検出

    閲覧有難うございます。 前回の質問から、少しずつですが開発をしています。 リアルタイム笑顔検出は、できるようになりました。 現在行おうとしていることが、リアルタイムで得た動

  • 受付中

    FreeBSD上でEclipseにopencv3.1.0を導入できない

    内容 EclipseでOpenCVを用いたソースを作成してみたのですが、パッケージが見当たらないと出てきてコンパイル出来ませんでした。おそらくOpenCVにパスが通ってないんだと思

同じタグがついた質問を見る

  • C++

    3020questions

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

  • Eclipse

    1528questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • OpenCV

    869questions

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