最近碰到一个场景
用opencv链接网络摄像头,但是摄像头的地址不一定是正确的,或者是打开的,当错误的时候会直接报错,但是当地址正确却没有打开,或者网络限制的时候,会等上半天才返回,并且不报错
???,这哪里行,我都用pthon了,还能不知道人生苦短嘛~
于是一顿操作猛如虎~好吧,多线程、信号量、巴拉巴拉,算了,还是问问度娘
然后看到了这个文章
https://www.cnblogs.com/sunshine-blog/p/12024820.html
哇,这个页面很简单,是我喜欢的类型,果断一试~
(代码给大家贴出来~姑且一试)
import time
import timeout_decorator
@timeout_decorator.timeout(6)
def test():
time.sleep(5)
return 5
aaa = test()
print(aaa)
然鹅,理想是美好的,现实是骨感的。
报错信息
AttributeError: module 'signal' has no attribute 'SIGALRM'
终于(其实也就看了两三个文章)让我找到一个一样简单的(还有好几个方法,我用那几个方法证明了我的懒~)
文章地址:https://zhuanlan.zhihu.com/p/39743129
代码如下:
import time
from func_timeout import func_set_timeout
@func_set_timeout(3)
def task():
while True:
print('hello world')
time.sleep(1)
if __name__ == '__main__':
task()
最后调用摄像头代码如下
import cv2
from func_timeout import func_set_timeout
@func_set_timeout(5)
def click_camera(in_url):
cap = cv2.VideoCapture(in_url)
return cap
in_url = input('camera_path:')
cap = click_camera(in_url)
ok
搞定~