我想在单独的线程中运行 pyglet,以便我可以实现输入的用户界面,而不会被pyglet.app.run().
import pyglet
class Window(pyglet.window.Window):
def __init__(self):
pyglet.window.Window.__init__(self, visible=True)
self.push_handlers(on_draw=self.on_draw)
self.im = pyglet.resource.image('image.jpg')
pyglet.app.run()
def on_draw(self):
self.clear()
import threading
class Thread(threading.Thread):
def run(self):
w = Window()
Run Code Online (Sandbox Code Playgroud)
跑步
Window()
Run Code Online (Sandbox Code Playgroud)
工作正常。然而,运行
t = Thread()
t.start()
Run Code Online (Sandbox Code Playgroud)
结果为Segmentation fault (core dumped),这是由对 的调用引起的pyglet.resource.image()。省略该调用可以消除该问题。
具体来说,是什么导致了这个问题,我该如何纠正它?更一般地说,使用 pyglet 渲染窗口同时允许其他程序执行的推荐方法是什么?有一个更好的方法吗?
当指定大于 1 的线宽时,由 cv2.line() 绘制的结果线宽比指定的宽。指定 1、2、3、4、5、6 的粗细分别产生 1、3、5、5、7、7 的线宽。我尝试使用不同的 lineType 值 (4,8,16) 和带有 shift 参数的子像素点位置,而对线宽没有影响。难道我做错了什么?
例如:
import numpy as np
import cv2
a = np.zeros((10,10), dtype=np.uint8)
cv2.line(a, (0,4), (9,4), 1, 2)
print(a)
Run Code Online (Sandbox Code Playgroud)
产生:
[[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[1 1 1 1 1 1 1 1 1 1]
[1 1 1 1 1 1 1 …Run Code Online (Sandbox Code Playgroud)