Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
分辨率列表(OpenCv、Python、摄像头)_Python_Arrays_List_Opencv - Fatal编程技术网

分辨率列表(OpenCv、Python、摄像头)

分辨率列表(OpenCv、Python、摄像头),python,arrays,list,opencv,Python,Arrays,List,Opencv,嗨,我想测试一下我相机的分辨率。通常我手动设置,分辨率(w,h)320480 现在,我希望在一个循环中设置列表分辨率=[(…)],或者在一个函数中设置更好的分辨率,它会自动为我提供每个输出,这样我就不必每只手写每个分辨率。我试了很多,但都没有成功 希望有人能帮助我 谢谢 代码: 导入系统 sys.path.append(“C:\\opencv\\build\\python\\2.7”) 进口cv2 将cv2.cv作为cv导入 导入时间 捕获=cv2。视频捕获(0) num_frame=0 决议=

嗨,我想测试一下我相机的分辨率。通常我手动设置,分辨率(w,h)320480

现在,我希望在一个循环中设置列表分辨率=[(…)],或者在一个函数中设置更好的分辨率,它会自动为我提供每个输出,这样我就不必每只手写每个分辨率。我试了很多,但都没有成功

希望有人能帮助我

谢谢

代码:

导入系统 sys.path.append(“C:\\opencv\\build\\python\\2.7”) 进口cv2 将cv2.cv作为cv导入 导入时间 捕获=cv2。视频捕获(0) num_frame=0 决议=[(320480)、(640480)、(704680)、(960680)、(1280720)、(1440720)、(19201080)] w=320 h=480 大小=capture.get(cv.cv\u CAP\u PROP\u FRAME\u WIDTH),capture.get(cv.cv\u CAP\u PROP\u FRAME\u HEIGHT) size\u new=capture.set(cv.cv\u CAP\u PROP\u FRAME\u WIDTH,w),capture.set(cv.cv\u CAP\u PROP\u FRAME\u HEIGHT,h) 印刷尺寸 开始=时间。时间() 虽然(正确): ret,frame=capture.read() 如果num_frame<60: num\u frame=num\u frame+1 其他: 打破 总时间=(time.time()-start) fps=(帧数/总时间) 打印str(num_frame)+“Frames”+str(总时间)+“Sekunden=”+str(fps)+“fps” capture.release() cv2.destroyAllWindows()
您只需将脚本封装在函数中,并在迭代列表时根据列表中的分辨率调用脚本即可

实际上,代码非常快,所以在某些情况下,
total_time=(time.time()-start)
的计算结果为零,因此给出了错误:
ZeroDivisionError:float division by zero
fps=(num_frame/total_time)
,因为total_time的计算结果为0,所以我添加了
time.sleep(0.001)
以消除此错误

import cv2
import cv2.cv as cv
import time

resolution = [(320,480),(640,480),(704,680),(960,680),(1280,720),(1440,720),(1920,1080)]

def change_resolution(w, h):

   capture = cv2.VideoCapture(0)

   num_frame = 0

   size = capture.get(cv.CV_CAP_PROP_FRAME_WIDTH), capture.get(cv.CV_CAP_PROP_FRAME_HEIGHT)

   size_new = capture.set(cv.CV_CAP_PROP_FRAME_WIDTH, w),capture.set(cv.CV_CAP_PROP_FRAME_HEIGHT,h)

   print size

   start = time.time()

   while(True):
       ret, frame = capture.read()
       if num_frame < 60:
           num_frame = num_frame + 1
           time.sleep(0.001)
       else:
           break

   total_time = (time.time() - start)
   fps = (num_frame / total_time)
   print str(num_frame) + ' Frames ' + str(total_time) + ' Sekunden = ' + str(fps) + ' fps' + ' for width: ' + str(w) + ' height: ' + str(h)

   capture.release()
   cv2.destroyAllWindows()


for reso in resolution:
   change_resolution(reso[0], reso[1])

当前代码运行正常吗?如果是,那么您只需将代码封装在函数中,并在for循环中调用它,同时迭代列表
resolution
代码运行良好!但是我怎样才能把它放在一个函数中,在一个循环中调用它呢?这是我的问题。请给我看看这个。分辨率(分辨率[0],分辨率[1])有何变化?reso[0]是否在w中,reso[1]是否在h中?谢谢你,ZdaR;-)
change\u resolution()
是一个函数,您可以在其中更改
w
h
的值,这与之前的场景相反,在该场景中,
w
h
的值在Jan是常量,如果有帮助,您可以通过用绿色勾号标记来接受答案。:)绿色记号在哪里?:-)下面是我这边左上方的箭头
import cv2
import cv2.cv as cv
import time

resolution = [(320,480),(640,480),(704,680),(960,680),(1280,720),(1440,720),(1920,1080)]

def change_resolution(w, h):

   capture = cv2.VideoCapture(0)

   num_frame = 0

   size = capture.get(cv.CV_CAP_PROP_FRAME_WIDTH), capture.get(cv.CV_CAP_PROP_FRAME_HEIGHT)

   size_new = capture.set(cv.CV_CAP_PROP_FRAME_WIDTH, w),capture.set(cv.CV_CAP_PROP_FRAME_HEIGHT,h)

   print size

   start = time.time()

   while(True):
       ret, frame = capture.read()
       if num_frame < 60:
           num_frame = num_frame + 1
           time.sleep(0.001)
       else:
           break

   total_time = (time.time() - start)
   fps = (num_frame / total_time)
   print str(num_frame) + ' Frames ' + str(total_time) + ' Sekunden = ' + str(fps) + ' fps' + ' for width: ' + str(w) + ' height: ' + str(h)

   capture.release()
   cv2.destroyAllWindows()


for reso in resolution:
   change_resolution(reso[0], reso[1])
(0.0, 0.0)
60 Frames 0.0599999427795 Sekunden = 1000.00095368 fps for width: 320 height: 480
(0.0, 0.0)
60 Frames 0.0639998912811 Sekunden = 937.501592564 fps for width: 640 height: 480
(0.0, 0.0)
60 Frames 0.0599999427795 Sekunden = 1000.00095368 fps for width: 704 height: 680
(0.0, 0.0)
60 Frames 0.0599999427795 Sekunden = 1000.00095368 fps for width: 960 height: 680
(0.0, 0.0)
60 Frames 0.0599999427795 Sekunden = 1000.00095368 fps for width: 1280 height: 720
(0.0, 0.0)
60 Frames 0.0599999427795 Sekunden = 1000.00095368 fps for width: 1440 height: 720
(0.0, 0.0)
60 Frames 0.0599999427795 Sekunden = 1000.00095368 fps for width: 1920 height: 1080