cv と numpy をインポートすると python の struct.unpack の動作が変わる理由を誰か説明できますか? ここに私が観察するものがあります:
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from struct import pack, unpack
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
正解です
>>> import cv
libdc1394 error: Failed to initialize libdc1394
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
cvをインポートした後でも問題ありません
>>> import numpy
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
cvをインポートしてからnumpyをインポートしたらOK
今私はpythonを再起動します:
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from struct import pack, unpack
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
>>> import numpy
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
ここまでは順調ですが、numpy をインポートした後に cv をインポートします。
>>> import cv
libdc1394 error: Failed to initialize libdc1394
>>> unpack("f",pack("I",31))[0]
0.0
複数のサーバーを含め、これを何度も繰り返しましたが、常に同じように進みます。struct.unpack と struct.pack でも試してみましたが、これも違いはありません。
numpy と cv のインポートが struct.unpack の出力にどのように影響するかを理解できません (パックは同じままです)。
「libdc1394」のことは、私が信じているように、レッドニシンです: ctypes エラー: libdc1394 エラー: libdc1394 の初期化に失敗しました
何か案は?
tl;dr: numpy をインポートしてから opencv をインポートすると、struct.unpack の動作が変わります。
更新: 以下の Paulo の回答は、これが再現可能であることを示しています。Seborg のコメントは、Python がサブノーマルを処理する方法と関係があることを示唆していますが、これはもっともらしく聞こえます。コンテキストを調べましたが、それは問題ではないようでした。インポート後のコンテキストはインポート前と同じだったからです。