任何人都可以解釋爲什麼導入cv和numpy會改變python的struct.unpack的行爲?這是我觀察到:OpenCV和Numpy交互不好
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
還OK,進口品種
>>> import numpy
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
後確定進口的簡歷後,然後numpy的
現在我重新啓動蟒蛇:
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的:
>>> 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 error: libdc1394 error: Failed to initialize libdc1394
任何想法?
tl; dr:導入numpy,然後opencv改變struct.unpack的行爲。
更新:Paulo的回答如下表明這是可重現的。 Seborg的評論表明,這與python處理次正常的方式有關,這聽起來似乎合理。我調查了Contexts,但這似乎並不是問題,因爲在進口之後的情況與之前一樣。
這不會對你有所幫助,但是爲了可讀性和簡化問題,'unpack(「f」,pack(「I」,31))「產生相同的結果嗎? –
@PauloAlmeida:好點。剛剛嘗試過 - 是的,結果相同...我將編輯問題以使其更易於閱讀... – Ben