2017-01-25 3 views
0

あまりにも幅広い質問をしてください。しかし、私の仕事は非常に具体的です:PythonのコードをC++(OpenCV)に書き直したいと思っています.C++ライブラリ(OpenBLAS、Eigen、私はOpenCVを使ってかなりの難題になるオリジナルのコードで行われたすべての配列操作を比較的簡単に繰り返すことができます。文法比較に関する記事を実際に書いた人がいますか?Python/NumPyに似た配列操作のC++ライブラリ

Pythonコード:

image = im_orig.copy() 
# Create input for multiples of net input/output changes. 
im_bg_width = int(_np.ceil(
    float(image.shape[1]) * scale_factor/_STRIDE) * _STRIDE) 
im_bg_height = int(_np.ceil(
    float(image.shape[0]) * scale_factor/_STRIDE) * _STRIDE) 
pad_size = 64 
im_bot_pixels = image[-1:, :, :] 
im_bot = _np.tile(im_bot_pixels, (pad_size, 1, 1)) 
image = _np.vstack((image, im_bot)) 
im_right_pixels = image[:, -1:, :] 
im_right = _np.tile(im_right_pixels, (1, pad_size, 1)) 
image = _np.hstack((image, im_right)) 
image = _scipy.misc.imresize(image, scale_factor, interp='bilinear') 
image = image.astype('float32') - _MEAN 

net_input = _np.zeros((im_bg_height, im_bg_width, 3), dtype='float32') 
net_input[:min(net_input.shape[0], image.shape[0]), 
      :min(net_input.shape[1], image.shape[1]), :] =\ 
    image[:min(net_input.shape[0], image.shape[0]), 
      :min(net_input.shape[1], image.shape[1]), :] 

編集:私は(特にPythonのC++ APIから)のpython dependecyを取り除きたい任意のコストでCythonを生成するものとは異なり、実際に読み取り可能なプログラムを持っています。

+0

と。 –

+1

@DietrichEppありがとう、私はNumPyが高速だと知っていますが、Pythonを削除することは必要不可欠です。 – Slowpoke

+0

「どのような費用をかけても」エンジニアの語彙に入れないでください:-) –

答えて

2

私はおそらくEigenがあなたに適していると思います。あなたがそれを試していない(私はあなたの質問に基づいてわからない)場合は、それを見てみる必要があります。私が集めたものから、(最速のものの中で)非常に高速であることは別として、それはかなり自然な構文も持っています。 C++だけが関係していれば、はるかに良くなりません。あなたはおそらく、C++数値ライブラリを検索したいが、あなたはパフォーマンスを向上させるために、C++のコードを書き換えている場合、あなたは失望、良いことができることをnumpyのコードを開始するのは非常に高速になる傾向に注意

http://eigen.tuxfamily.org

+0

ありがとう!いいえ、私はOpenCVだけの経験があります。多分、EigenとNumPyの間で書き直すことについてのヒントがいくつかありますか?私はそれがちょっと怠惰だと理解していますが、あるソリューションから別のソリューションに切り替えるのは非常に難しく時間がかかります – Slowpoke

+0

元のコードが何であるか知っていますか?数学的に言えば、それは何ですか?次に、ここから始めましょう:http://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.htmlそれは基本的な行列/線形代数のものを説明することから始まります。 – Lazarus535

+1

直接書き直し命令について:私はそのようなことを考えませんそれが一般的に非常に有用なものではありません。しかし、一般的には、numpyが行うことができる全てのために、Eigenライブラリには同等か、少なくとも非常によく似た操作が存在するはずです。 – Lazarus535