Czy ktoś może wyjaśnić, dlaczego importowanie cv i numpy zmieniłoby zachowanie Pythona w struct.unpack? Oto co obserwować:OpenCV i Numpy źle reagują
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
ta jest poprawna
>>> import cv
libdc1394 error: Failed to initialize libdc1394
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
nadal OK, po zaimportowaniu cv
>>> import numpy
>>> unpack("f",pack("I",31))[0]
4.344025239406933e-44
i OK po zaimportowaniu CV, a następnie numpy
Teraz restart 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
Jak na razie dobrze, ale teraz mogę importować cv po zaimportowaniu numpy:
>>> import cv
libdc1394 error: Failed to initialize libdc1394
>>> unpack("f",pack("I",31))[0]
0.0
Mam powtórzył to kilka razy, w tym na wielu serwerach, a to zawsze idzie tą samą drogą. Próbowałem również z struct.unpack i struct.pack, co również nie ma znaczenia.
Nie mogę zrozumieć, jak importowanie numpy i cv może mieć jakikolwiek wpływ na wynik struct.unpack (pakiet pozostaje taki sam, btw).
W "libdc1394" Chodzi o to, wierzę, czerwony-śledź: ctypes error: libdc1394 error: Failed to initialize libdc1394
Jakieś pomysły?
tl; dr: importowanie numpy, a następnie opencv zmienia zachowanie struct.unpack.
AKTUALIZACJA: Odpowiedź Paula poniżej pokazuje, że jest to powtarzalne. Komentarz Seborga sugeruje, że ma to coś wspólnego ze sposobem, w jaki pyton radzi sobie z podnormałami, co brzmi wiarygodnie. Spojrzałem na Contexts, ale nie wydawało mi się to problemem, ponieważ kontekst był taki sam po imporcie, jak przed nim.
To ci nie pomoże, ale tylko ze względu na czytelność i uproszczenie problemu, czy "rozpakuj (" f ", paczka (" I ", 31)) da taki sam rezultat? –
@PauloAlmeida: Dobra uwaga. Po prostu wypróbowałem - tak, ten sam wynik ... Zmienię to pytanie, aby ułatwić czytanie ... – Ben