題意の通り、pythonでインポートするモジュールの中身が編集したいです。
例えばC++の場合は、モジュール(ライブラリ)やヘッダファイルをインクルードするので、
c++
1#include <iostream> 2#include <stdarg.h> 3#include <opencv2/core/hal/hal.hpp>
上記のようにヘッダファイルを探して開いて、その中身を編集することが出来ます。
しかしpythonの場合は、
python
1import numpy as np 2import cv2
このようにcv2をインポートしたからといって、cv2.pyというソースコードがあるわけではなく、編集できません。
具体的に何を編集した以下と言うと、SIFT特徴量の抽出器を開きたく、C++の場合はsift.cppというソースコードがgithub上にあり、openCVをインストールしたときにPCに一緒に入るのですが、pythonの場合はsift.pyはバイナリコードになっていて開けません。
ちなみに、
sift.cppを編集して、pythonでSIFT特徴量を使ったコードを書いても、出力は変化しませんでした。
python
1import numpy as np 2import cv2 3img1 = cv2.imread('test3.png',0) 4img2 = cv2.imread('test3_rot.png',0) 5#特徴抽出機の生成 6detector = cv2.xfeatures2d.SIFT_create() 7#kpは特徴的な点の位置 destは特徴を現すベクトル 8kp1, des1 = detector.detectAndCompute(img1, None) 9kp2, des2 = detector.detectAndCompute(img2, None) 10#特徴点の比較機 11bf = cv2.BFMatcher() 12matches = bf.knnMatch(des1,des2, k=2) 13#割合試験を適用 14good = [] 15match_param = 0.6 16for m,n in matches: 17 if m.distance < match_param*n.distance: 18 good.append([m]) 19#cv2.drawMatchesKnnは適合している点を結ぶ画像を生成する 20img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good, None,flags=2) 21cv2.imwrite("sift_result.png", img3)
detectAndCompute(img1, None)は、sift.cpp内に定義があるのでそこのパラメータを弄ってみたのですが、このPythonコードから出力される結果には影響しませんでした。
どうすればpythonで書いたソースコードの中のモジュールの中身を編集できますか。
ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー