2017-11-10 3 views
0

Die Aufgabe ist, ich nehme Bilder von der Kamera, und ich verarbeite Bilder mit CNNs, und dann zeigen Sie das Bild mit dem Ergebnis. Aber es ist ein Fehler, wenn ich opencv Python-Schnittstelle verwenden, um das Bild zu zeigen (das Betriebssystem Mac OS):Fehler bei der Verwendung von cv2.imshow()

while(1): 
    test_data = [] 
    ret, frame = cap.read() 
    frame = cv2.imread('hello.jpg') 
    h, w, _ = frame.shape 
    img = copy.deepcopy(frame) 
    img = pre_process(img) 
    test_data.append([img]) 
    ret_res = _infer(inferer, test_data, threshold) 
    draw_result(frame, ret_res, h, w)  

    cv2.imshow("hellocapture", frame) 

der folgende Fehler aufgetreten:

PC: @    0x0 (unknown) 
*** SIGFPE (@0x7fffc5186d01) received by PID 36436 (TID 0x7fffe38773c0) stack 
trace: *** 
@  0x7fffdab7bb3a _sigtramp 
@  0x7fffc5186d02 CFNumberCreate 
@  0x7fffc6c027b5 -[NSPlaceholderNumber initWithDouble:] 
@  0x7fffcae3b594 +[CALayer defaultValueForKey:] 
@  0x7fffcaebd489 classDescription_locked() 
@  0x7fffcaebc9fe classDescription_locked() 
@  0x7fffcaebc9fe classDescription_locked() 
@  0x7fffcaeb8292 classDescription() 
@  0x7fffcaeb8495 CAObject_classInfo 
@  0x7fffcae3bdf4 CA::Layer::class_state() 
@  0x7fffcae3e081 -[CALayer init] 
@  0x7fffc2d07854 -[NSView makeBackingLayer] 
@  0x7fffc2d076db -[NSView(NSInternal) _createLayerAndInitialize] 
@  0x7fffc2d06d4d -[NSView _doSetWantsLayerYES] 
@  0x7fffc2d069da -[NSView setWantsLayer:] 
@  0x7fffc2d142b6 __49-[NSThemeFrame _floatTitlebarAndToolbarFromInit:]_block_invoke 
@  0x7fffc364b8b6 +[NSAnimationContext runAnimationGroup:] 
@  0x7fffc2d13f23 -[NSThemeFrame _floatTitlebarAndToolbarFromInit:] 
@  0x7fffc2d11a9c -[NSThemeFrame initWithFrame:styleMask:owner:] 
@  0x7fffc2d10522 -[NSWindow _commonInitFrame:styleMask:backing:defer:] 
@  0x7fffc2d0ec03 -[NSWindow _initContent:styleMask:backing:defer:contentView:] 
@  0x7fffc2d0e65f -[NSWindow initWithContentRect:styleMask:backing:defer:] 
@  0x1171ddebd -[QCocoaWindow initWithContentRect:styleMask:backing:defer:] 
@  0x1171dddb1 -[NSWindow(QWidgetIntegration) qt_initWithQWidget:contentRect:styleMask:] 
@  0x1171cee19 qt_mac_create_window() 
@  0x1171ce119 QWidgetPrivate::createWindow_sys() 
@  0x1171ce073 qt_mac_window_for() 
@  0x1171d3b13 QWidgetPrivate::setModal_sys() 
@  0x1172637c8 QWidget::create() 
@  0x1175d5431 QToolBarPrivate::init() 
@  0x1175d631c QToolBar::QToolBar() 
@  0x111ca9c98 CvWindow::createToolBar() 
Floating point exception: 8 

und ich habe positioniert, dass die cv2.imshow hat das Problem, aber ich weiß nicht wie?

, wenn ich nur den folloing Code verwenden, es ist ok

#!/usr/bin/env python 
# coding=utf-8 
import cv2 
import numpy 
import matplotlib.pyplot as plot 

cap = cv2.VideoCapture(0) 
while(1): 
    # get a frame 
    ret, frame = cap.read() 
    # show a frame 
    print frame.shape 
    cv2.imshow("capture", frame) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 
+0

Was 'H' tun und 'w' enthalten? Kannst du sie drucken? – Sunreef

+0

h entspricht 720 und w entspricht 1280 –

+0

Sie sollten wahrscheinlich die Dokumentation von ['imshow'] (https://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html#imshow) lesen, insbesondere diese Notiz nahe dem Ende. –

Antwort

0

Wenn Sie ein Bild in OpenCV zeigen Sie normalerweise benötigen einen WAITKEY einstellen und freigeben:

while(1): 
    test_data = [] 
    ret, frame = cap.read() 
    frame = cv2.imread('hello.jpg') 
    h, w, _ = frame.shape 
    img = copy.deepcopy(frame) 
    img = pre_process(img) 
    test_data.append([img]) 
    ret_res = _infer(inferer, test_data, threshold) 
    draw_result(frame, ret_res, h, w)  

    cv2.imshow("hellocapture", frame) 
    if cv2.waitKey(1) & 0xFF == ord('q') 
     break 

cap.release() 
cv2.destroyAllWindows() 
+0

der Fehler wird zuvor aufgetreten, wenn cv2.waitKey (1) & 0xFF == ord ('q') –

Verwandte Themen