Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
寻找在RPi上显示图像并继续python执行的简单方法_Python_Image_Raspberry Pi_Display - Fatal编程技术网

寻找在RPi上显示图像并继续python执行的简单方法

寻找在RPi上显示图像并继续python执行的简单方法,python,image,raspberry-pi,display,Python,Image,Raspberry Pi,Display,我正在将一个应用程序传输到RPi,我需要一种在代码继续执行时使用Python3显示全屏图像的方法。我希望避免深入研究Tkinter和Pygame等复杂的GUI模块。我只想让图像填满屏幕,直到代码替换它们或告诉它们离开。如果Tkinter或Pygame能够做到这一点,那就好了,但在我看来,它们都会进入最终需要键盘输入的循环。我的应用程序包括监测传感器和外部输入,但不会连接键盘。我尝试了以下方法: 通过subprocess.call激活的feh显示图像,但代码停止执行,直到通过按键清除图像 这个功能

我正在将一个应用程序传输到RPi,我需要一种在代码继续执行时使用Python3显示全屏图像的方法。我希望避免深入研究Tkinter和Pygame等复杂的GUI模块。我只想让图像填满屏幕,直到代码替换它们或告诉它们离开。如果Tkinter或Pygame能够做到这一点,那就好了,但在我看来,它们都会进入最终需要键盘输入的循环。我的应用程序包括监测传感器和外部输入,但不会连接键盘。我尝试了以下方法:

通过subprocess.call激活的feh显示图像,但代码停止执行,直到通过按键清除图像

这个功能可以工作,但只显示一个小窗口,而不是全屏

fbi无法让它显示图像

xcd open可以工作,但可以在图像查看器应用程序中的小窗口中打开-无需单击鼠标就无法全屏显示

我没有试过OpenCV。这似乎可行,但对于这个简单的应用程序来说,需要引入大量的基础设施

记录在案的是,我去过谷歌,为此花了很多时间。这个请求是最后的手段

如果您需要一些伪代码:

displayImage("/image_folder/image1.jpg" fullscreen = True)
time.sleep(1)
clearImage()
displayImage("/image_folder/image2.jpg" fullscreen = True)
您不会展示如何尝试使用feh和子进程,但可以尝试在后台启动它,这样它就不会阻塞主线程:

subprocess.call("feh -F yourImage.jpg &", shell=True)
请注意,后台进程,即以&开头的进程,正在使用shell的一个功能,因此我将shell设置为True

然后,在显示下一个图像之前,先终止上一个实例:

subprocess.call("pkill feh")
或者,如果您事先知道要显示的所有图像的名称,您可以在启动时传入所有图像名称,以幻灯片模式启动feh,然后在每次要推进图像时发送信号SIGUSR1:

os.kill(os.getpid(...), signal.SIGUSR1)
如果上述操作不起作用,请单击原始问题下的“编辑”,并添加以下命令的输出,以便我们可以继续使用帧缓冲区路径:

fbset -fb /dev/fb0

tvservice -d edid
edidparser edid