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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

537閲覧

c言語からpythonコードを読み込む

uriuri

総合スコア47

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/28 09:01

編集2018/09/29 05:33

c

1#include <stdio.h> 2#include <Python.h> 3 4int main(void){ 5 6 /* pythonインタラプタを初期化 */ 7 Py_Initialize(); 8 9 PyRun_SimpleString("import cv2"); 10 /*PyRun_SimpleString("im = cv2.imread("teratail.jpg")"); 11 PyRun_SimpleString("cv2.imshow("1", im)"); 12 PyRun_SimpleString("cv2.waitKey()"); 13 PyRun_SimpleString("cv2.destroyAllwindows()"); */ 14 15 /* pythonインタラプタを終了 */ 16 Py_Finalize(); 17 return 0; 18}

Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named cv2

python側で

python

1import cv2 2 3im = cv2.imread("teratail.jpg") 4cv2.imshow("1", im) 5cv2.waitKey() 6cv2.destroyAllwindows()

を行ったところ画像は表示されました
opencvも入っていることは確認済みです

なぜopencvがないといわれてしまうのでしょうか
アドバイスいただけると幸いです

python3にはopencvが入っており,
pythonで
確認したところ
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named cv2
となることから優先的にpython2側で実行されているということなのでしょうか

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

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

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

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

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

Eki

2018/09/29 06:21

どのようにコンパイルしていますか?
uriuri

2018/09/29 07:08

コンパイルは  gcc -fPIC python_c.c $(python-config --cflags --ldflags)  で行っていました
Eki

2018/09/29 07:10

`python-config --cflags --ldflags` を単体で実行するとどうなりますか。おそらくあなたの読みは正しくて、 python2 で実行されているんだろうと思いますが...。
Eki

2018/09/29 07:12

すみません、解決していましたね。
guest

回答2

0

自己解決

コンパイルを
gcc -fPIC python_c.c $(python-config --cflags --ldflags)
で行っていたところ
gcc -fPIC python_c.c $(python3-config --cflags --ldflags)
にしたところpyton3の実行になり問題なくできました
お世話がせしました

投稿2018/09/29 07:09

uriuri

総合スコア47

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

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

0

読み込まれるpythonのバージョンはコンパイル・リンク時に決定されているので

まずは

#include <Python.h> #include <stdio.h> int main(void){ Py_Initialize(); printf("%s", Py_GetVersion()); printf("%ls", Py_GetPath()); Py_Finalize(); return 0; }

などで利用されているpythonのバージョン、読み込みpathなどを見てみてはいかがでしょうか。

バージョンがおかしかった場合は コンパイル時のインクルードpath、利用するライブラリpathなどが間違っているので、正しくなおすところから始めてみてはどうでしょう。

pythonのバージョンが正しい場合は
Py_GetPath() で表示された場所にOpenCVが入っていることを確認します。
間違っているようであれば、
Py_Initialize()の前にPy_SetPath()を利用してPathが指定できますので
そちらで指定できます。

https://docs.python.jp/3/c-api/init.html#c.Py_SetPath

投稿2018/09/29 06:32

calkinos

総合スコア452

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問