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

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

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

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

Python

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

Q&A

2回答

3886閲覧

opencvパッケージの中身を見たい。

退会済みユーザー

退会済みユーザー

総合スコア0

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/05/15 17:34

まず、その場所についてなんですが、

イメージ説明

opencvのプログラムって全て、
青枠のディレクトリーに入ってるんでしょうか?
どこに何が入っているか、等よく分かってないんですが、
コマンドで呼び出すと、これが実行されるんですかね?

また、緑枠のやつは、一応名前にcvと入っていますが、
どんな違いがあるんでしょうか?

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

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

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

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

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

guest

回答2

0

画像を文字に起こすと以下のようになります。

[青] [略]/LocalcCache/local-packages/Python39\site-packages\cv2
[緑] [略]/LocalcCache/local-packages/Python39\site-packages\opencv[略]dist-info


質問1に対する回答

opencvのプログラムって全て、青枠のディレクトリーに入ってるんでしょうか?

そうなります。
pythonのimport cv2でここを参照することになります。
jbpb0さんが書いておられますように、OpenCV自体は本来C++のライブラリで、Python用のライブラリではありません。C++でできる機能をPythonでも使えるようにガワをかぶせたものがPython用のOpenCVと理解しています。

ソースコードを読み解くと大変なので、チュートリアルからやりたいことに沿って項目を探す、がおすすめです。関数名が分かれば、具体的にどのコードを見たらいいか分かりますので、OpenCVのgithubから追跡できる(要C++の知識)と思います。


質問2に対する回答

緑枠のやつは、一応名前にcvと入っていますが、どんな違いがあるんでしょうか?

Pythonをみんなで使いやすくしようぜというルール(?)にPEP(Python Enhancement Proposals)があります。この中のPEP 376に答えがあります。

要旨:

  • ディレクトリを見ればすぐに何をしたいか分かるようににしておきましょう。
  • インストール情報を残しておきましょう。
  • アンインストール情報も残しておきましょう。

投稿2021/05/16 03:03

編集2021/05/16 03:21
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/05/16 03:08

abstract呼んだんですがいまいち分かりません、、 このディレクトリだけでcvの関数が使用できるわけではないんですよね?
退会済みユーザー

退会済みユーザー

2021/05/16 03:17

cv2の関数を見たいのであれば下の1を見てください。 --- abstractの説明は2つある質問の2つ目の方の回答です。 「import cv2でどこを見ているか?」であれば下の1を参照ください 「distinfoってなんだ?」であれば下の2(abstract)を参照ください。 ※abstractを見てもpenCVの実際の処理はわかりません。 質問にあったディレクトリは2つあります。 1. cv2: Pythonのimport cv2で呼び出されるもの 2. opencv(略)-distinfo: インストーラー等に相当。import cv2では使われません。
退会済みユーザー

退会済みユーザー

2021/05/16 03:29 編集

Releases 106 OpenCV 4.5.2 Latest on 3 Apr + 105 releases とあるやつですか?ここにCプラス(とパイソン?)で書かれたコードが見れる状態で存在するんですか? Cannyの回答を受けて Cannyてある関数ですよね、かなり深い階層にあるみたいですが、いかにしてそこにあると見つけ出されたのでしょうか
退会済みユーザー

退会済みユーザー

2021/05/16 03:42 編集

OpenCV自体はC++のライブラリですので、大半のコードはC++で書かれているはずです。ごく一部はPythonで書いてあるかもしれませんが、基本はC++です。(というのも、C++が圧倒的にPythonより早く動くからで、完全にPythonを使ってOpenCVを再現したら恐らく遅すぎて使い物になりません。) このC++の速さをPythonでも受けたい、というのが"ラッパー"という機能です。難解なC++にフタをしてしまって、「難しいこと抜きにPython使いでもOpenCVを使いたい」を実現する機能です。 このフタを取りたいのであれば、githubからC++のソースコードを見るしかありません。ラッパーに関してはC++の機能をPythonでなるべく正確に再現させるための手段ですので、画像処理を知りたい、という期待に沿った回答は入っていないものと思います。 「OpenCVの処理を知りたい」という意図の質問にはいくらか段階があると思います。 1. 画像処理の理論としてプログラミング言語抜きに処理内容を知りたい 2. ハードウエアの制御をどうやってC++でしているかを知りたい。 3. 画像処理の理論をどうプログラミングに落とし込んでC++で実装したかを知りたい 4. C++の実装をどうやってPythonで動かすようにしているか知りたい 1は書籍にたくさんありますし、2はコンパイラだとかアセンブラの話になります。3はgithubを見なければなりませんし、4はPythonラッパーについて調べないといけません。
退会済みユーザー

退会済みユーザー

2021/05/16 03:50

> Cannyの回答を受けて > Cannyてある関数ですよね、かなり深い階層にあるみたいですが、いかにしてそこにあると見つけ出されたのでしょうか PythonのOpenCVで、cv2.Cannyという関数があります。 チュートリアル http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_canny/py_canny.html あとは関数名で検索すればヒットします。私はC++を読めませんが、stackoverflowによれば、大概srcディレクトリに関数が定義されている、とのことです。 https://github.com/opencv/opencv/search?q=canny
guest

0

Pythonでimportできるものの実体がどこにあるのか調べる方法は、たとえばこのあたりを見てください
【Python】モジュール・パッケージのインストールパスを確認する方法
pythonのパッケージの保存場所

 
あるいは、pipでのインストールで使うファイルを
Download files
から、お使いのシステム(OSの種類、Pythonのバージョン)に合うものをダウンロードして解凍しても、同じものが入手できます

pip コマンドを使って PyPI からパッケージをダウンロードしたり、ダウンロードしたものをインストールしたり
の「おまけ その2: ダウンロードしたパッケージを解凍」に書かれてるように、そのファイル(*.whl)はZIPファイルなので、unzip等のZIPファイルを解凍できるツールで解凍し中のファイルを取り出せます

 
ただし、Python用のOpenCVは、C++からコンパイルして作ったライブラリファイル(Windowsならば*.dll)の中身を呼び出して使っているだけなので、上記のようにしてファイルを入手して調べても、処理の実際は分かりません
(ライブラリファイルは、コンパイルして作られたバイナリファイルなので)

実際の処理のコードを見たければ、
OpenCV on Wheels
あたりからたどって、本家OpenCVのC++のコードを読む必要があります

投稿2021/05/16 02:42

編集2021/05/16 02:49
jbpb0

総合スコア7653

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

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

退会済みユーザー

退会済みユーザー

2021/05/16 03:20

やっぱブラックボックスなんですね。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問