Raspberry PiでopenCVをC++で使う方法について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Arare

Raspberry PiでopenCVをC++で使う方法について

#1

投稿記事 by Arare » 10年前

Raspberry PiでOpenCVをC++で動かしたいのですが、プログラムを実行してみると
"stdafx.h"が読み取れないといった趣旨のエラーが出てしまい、実行できません
Raspberry PiにはC++とOpenCV2.4.2は、おそらくインストールできていると思います

わかるひとがいらっしゃいましたら
なぜ"stdafx.h"が読み取れないのか
どのように変えればそのプログラムが動くようになるのか教えてください
宜しくお願い致します

コード:

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#pragma comment(lib,"opencv_imgproc242d.lib")
#pragma comment(lib,"opencv_core242d.lib")
#pragma comment(lib,"opencv_highgui242d.lib")

int _tmain(int argc, _TCHAR* argv[])
{

IplImage *Image;

//window open

cvNamedWindow("DisplayImage",CV_WINDOW_AUTOSIZE);

if((Image = cvLoadImage("Image.jpg")) == NULL){
	printf("failed to open Image\n");
	cvWaitKey (0);
	return -1;
}

cvShowImage("DisplayImage",Image);
cvWaitKey(0);

cvDestroyWindow("DisplayImage");
cvReleaseImage(&Image);
return 0;
}


Poco
記事: 161
登録日時: 13年前

Re: Raspberry PiでopenCVをC++で使う方法について

#2

投稿記事 by Poco » 10年前

ラズベリーパイ上で動作するOSはLinuxですよね?
ソースコードはパッと見、Winodws向けに見えますが、ラズベリーパイ上でWindowsは動きませんよね?
1,3,4,5,7行目はWindows向けとなっているので、Linux向けに修正してください。
1行目削除。
3,4,5削除リンクオプションでそれぞれライブラリを指定。
#*.libという名前もLinux上のOpenCVでは違う名前になっていると思います。
#*.soとか。
7行目_tmain→main、_TCHAR→char

Arare

Re: Raspberry PiでopenCVをC++で使う方法について

#3

投稿記事 by Arare » 10年前

解答ありがとうございます!

1,3,4,5,7行目の部分をLinux向けに修正して書き直すと具体的にどのようになりますか?
あと、内部の部分のプログラムはこのまま使用してもLinuxで動きますか?

Poco
記事: 161
登録日時: 13年前

Re: Raspberry PiでopenCVをC++で使う方法について

#4

投稿記事 by Poco » 10年前

Arare さんが書きました:解答ありがとうございます!

1,3,4,5,7行目の部分をLinux向けに修正して書き直すと具体的にどのようになりますか?
あと、内部の部分のプログラムはこのまま使用してもLinuxで動きますか?
具体的にとはどういう意味でしょうか?修正内容は示したつもりですが。
ほかの部分に関しては、Raspberry piもOpenCVも持っていないのでわかりません。
とりあえずコンパイルしてみてはどうでしょう?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: Raspberry PiでopenCVをC++で使う方法について

#5

投稿記事 by みけCAT » 10年前

.libに相当するものは.soではなくて.aだと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: Raspberry PiでopenCVをC++で使う方法について

#6

投稿記事 by softya(ソフト屋) » 10年前

よくわからないのであれば、window用のopenCVを参考にせずLinuxあるいはRaspberry Pi用のサンプルコードを使うべきですよ。
Raspberry Pi用を参考にするのが一番だと思いますけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Arare

Re: Raspberry PiでopenCVをC++で使う方法について

#7

投稿記事 by Arare » 10年前

3,4,5行目
#pragma comment(lib,"opencv_imgproc242d.lib")
#pragma comment(lib,"opencv_core242d.lib")
#pragma comment(lib,"opencv_highgui242d.lib")
ここの最後のlib部分を.aにして
7行目を
_tmain→main、_TCHAR→char

にすればいいのですか?

間違いございましたらご指摘宜しくお願い致します

Poco
記事: 161
登録日時: 13年前

Re: Raspberry PiでopenCVをC++で使う方法について

#8

投稿記事 by Poco » 10年前

Arare さんが書きました:3,4,5行目
間違いございましたらご指摘宜しくお願い致します
3,4,5行目は削除してください。
リンク時にリンクしてください。
リンクは共有ライブラリ(*.so、Windowsでいうdll)でリンクするか、静的ライブラリ(*.a)でリンクしてください。
#選択によってリンクの仕方が違います。and OpenCVを持っていないので、私には正確なライブラリ名が分かりません。

Arare

Re: Raspberry PiでopenCVをC++で使う方法について

#9

投稿記事 by Arare » 10年前

コード:

 
#include <opencv2/opencv.hpp>
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/types_c.h"
#include "opencv2/core/version.hpp"
#include "opencv2/highgui/highgui_c.h"
#include <iostream>
int main(int argc, char* argv[]) {

IplImage *Image;

//window open
cvNameWindow("DisplayImage",CV_WINDOW_AUTOSIZE);

if((Image = cvLoadImage("Image.jpg)) == NULL){
	printf("failed to open Image\n");
	cvWaitKey (0);
	return -1;
}

cvShowImage("DisplayImage",Image);
cvWaitKey(0);

cvDestroyWindow("DisplayImage");
cvReleaseImage(&Image);
return 0;
}


自分なりに書き直してみましたができません

どこが間違っていますか?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: Raspberry PiでopenCVをC++で使う方法について

#10

投稿記事 by みけCAT » 10年前

cvLoadImageの引数のダブルクォーテーションマークが足りません。
インデントもきちんとした方がいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る