1
Mac OSX SierraのOpenCVでWebカメラを開き、そこから画像を表示するとNSExceptionsが表示されます。OpenCV Mac OSX Sierraでカメラを開いて表示しているときにクラッシュする
これは私がエラーモードを解明しようとしているテストコードです。
import cv2
cam = cv2.VideoCapture(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
cam.open(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
cam.open(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
cam.open(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
私は取得していますエラーは、私がITERMまたは端末からそれを実行したとき、私は一貫して、このエラーを取得する
2016-11-05 18:15:07.075 Python[1082:24157] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'An instance 0x7fca4ac3a6f0 of class AVCaptureDALDevice was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x7fca4ac42f80> (
<NSKeyValueObservance 0x7fca4ae6df50: Observer: 0x7fca4ae6b410, Key path: open, Options: <New: NO, Old: NO, Prior: NO> Context: 0x7fffc9c99570, Property: 0x7fca4ac3fe30>
)'
*** First throw call stack:
(
0 CoreFoundation 0x00007fffafde96fb __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00007fffc45f0a2a objc_exception_throw + 48
2 CoreFoundation 0x00007fffafe669a5 +[NSException raise:format:] + 197
3 Foundation 0x00007fffb17d1d84 NSKVODeallocate + 293
4 AVFoundation 0x00007fffac67dabe -[AVCaptureDeviceInput _setDevice:exceptionReason:] + 304
5 AVFoundation 0x00007fffac5ae914 -[AVCaptureDeviceInput dealloc] + 39
6 CoreFoundation 0x00007fffafe53a7b -[__NSSingleObjectArrayI dealloc] + 43
7 libobjc.A.dylib 0x00007fffc45e5e60 _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 808
8 CoreFoundation 0x00007fffafd20d66 _CFAutoreleasePoolPop + 22
9 CoreFoundation 0x00007fffafd612c5 __CFRunLoopRun + 2229
10 CoreFoundation 0x00007fffafd607b4 CFRunLoopRunSpecific + 420
11 HIToolbox 0x00007fffaf2fcfbc RunCurrentEventLoopInMode + 240
12 HIToolbox 0x00007fffaf2fcdf1 ReceiveNextEventCommon + 432
13 HIToolbox 0x00007fffaf2fcc26 _BlockUntilNextEventMatchingListInModeWithFilter + 71
14 AppKit 0x00007fffad9e6b79 _DPSNextEvent + 1093
15 AppKit 0x00007fffae0fc1c3 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1637
16 libopencv_highgui.2.4.dylib 0x000000010d79c0a6 cvWaitKey + 402
17 cv2.so 0x000000010cfa3ce1 _ZL16pyopencv_waitKeyP7_objectS0_S0_ + 103
18 Python 0x000000010cc001ab PyEval_EvalFrameEx + 27003
19 Python 0x000000010cbf963a PyEval_EvalCodeEx + 1617
20 Python 0x000000010cbf8fe3 PyEval_EvalCode + 48
21 Python 0x000000010cc1cc04 run_mod + 53
22 Python 0x000000010cc1cca7 PyRun_FileExFlags + 133
23 Python 0x000000010cc1c7f8 PyRun_SimpleFileExFlags + 702
24 Python 0x000000010cc2deba Py_Main + 3094
25 libdyld.dylib 0x00007fffc4ecd255 start + 1
26 ??? 0x0000000000000002 0x0 + 2
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6
です。しかし、私はxtermから一貫してそれを取得します。
をすべて呼び出す前にcam.release()
を使用すると、同じエラーが発生します。 cap_avfoundation_mac.mm
で
import cv2
cam = cv2.VideoCapture(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
cam.release()
cam.open(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
cam.release()
cam.open(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
cam.release()
cam.open(0)
ret, im = cam.read()
cv2.imshow('im', im)
cv2.waitKey(1)
cam.release()
私は、Pythonを知っている/使用していないが、あなたは閉じずに複数回 'cam.open'呼び出すように見えます。あれは正しいですか? –
はい、私はこれを 'cam.open(0)'のチェックとリリースで独自に行っています。私は 'cam.release()'が挿入された状態でこれを試しました。 (明確にするために私の質問を更新しました) – ramsey0
'cam.open'をなぜ呼び出すのか、まだ理解していません。最初のフレームには必要ないようです。 –