cv2.imshow() do not pop up the window when called in the threading. An icon of python3 appears in the docker, but no window, no plot. Besides, I need the function of half-duplex communication, thus I cannot just remove threading. How can I correctly show the picture inside threading? Any response is appreciated.
Background: MacOS Catalina, python==3.5, opencv==3.4.2
import cv2
import threading
def run():
# start the camera
video_reader = cv2.VideoCapture(0)
while True:
# collect image
ret_val, image = video_reader.read()
cv2.imshow('image', image)
if cv2.waitKey(1) == 27:
break # esc to quit
t = threading.Thread(target=run, name="run")
t.start()
Some Warning messages that may help:
python3[86286:1964642] WARNING: NSWindow drag regions should only be invalidated on the Main Thread! This will throw an exception in the future. Called from (
0 AppKit 0x00007fff2fc177f0 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 371
1 AppKit 0x00007fff2fc14ce1 -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1416
2 AppKit 0x00007fff2fc14753 -[NSWindow initWithContentRect:styleMask:backing:defer:] + 42
3 AppKit 0x00007fff2fea8368 -[NSWindow initWithContentRect:styleMask:backing:defer:screen:] + 52
4 libopencv_highgui.3.4.2.dylib 0x000000010327bee7 cvNamedWindow + 727
5 libopencv_highgui.3.4.2.dylib 0x000000010327b7a3 cvShowImage + 195
6 libopencv_highgui.3.4.2.dylib 0x000000010327860d _ZN2cv6imshowERKNS_6StringERKNS_11_InputArrayE + 477
7 cv2.cpython-35m-darwin.so 0x00000001014f8393 _ZL18pyopencv_cv_imshowP7_objectS0_S0_ + 387
8 python3 0x0000000100ca759f PyCFunction_Call + 127
9 python3 0x0000000100d6eec7 PyEval_EvalFrameEx + 18583
10 python3 0x0000000100d68faf _PyEval_EvalCodeWithName + 335
11 python3 0x0000000100c746aa function_call + 106
12 python3 0x0000000100c30b35 PyObject_Call + 69
13 python3 0x0000000100d6fc9b PyEval_EvalFrameEx + 22123
14 python3 0x0000000100d6efb8 PyEval_EvalFrameEx + 18824
15 python3 0x0000000100d6efb8 PyEval_EvalFrameEx + 18824
16 python3 0x0000000100d68faf _PyEval_EvalCodeWithName + 335
17 python3 0x0000000100c746aa function_call + 106
18 python3 0x0000000100c30b35 PyObject_Call + 69
19 python3 0x0000000100c53694 method_call + 148
20 python3 0x0000000100c30b35 PyObject_Call + 69
21 python3 0x0000000100d77bf4 PyEval_CallObjectWithKeywords + 68
22 python3 0x0000000100de472a t_bootstrap + 122
23 libsystem_pthread.dylib 0x00007fff69e8cd76 _pthread_start + 125
24 libsystem_pthread.dylib 0x00007fff69e895d7 thread_start + 15
)
2019-10-14 15:20:27.485 python3[86286:1964642] WARNING: nextEventMatchingMask should only be called from the Main Thread! This will throw an exception in the future.
Apple only allows native UI functionality to be used on the main thread in macOS and iOS.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With