相关疑难解决方法(0)

OpenCV/Python:使用VideoCapture读取特定帧

有没有办法使用VideoCapture()方法获取特定的框架?

我目前的代码是:

import numpy as np
import cv2

cap = cv2.VideoCapture('video.avi')
Run Code Online (Sandbox Code Playgroud)

是我的参考教程.

python opencv python-2.7

34
推荐指数
5
解决办法
6万
查看次数

Python,OpenCV:从WebCam捕获图像

我有一台罗技C920挂在我的电脑上,我正试图用它来点击使用OpenCV的图片.

我知道我可以使用以下方法捕获图像:

cam = cv2.VideoCapture(1)
s, im = cam.read() # captures image
cv2.imshow("Test Picture", im) # displays captured image
cv2.imwrite("test.bmp",im) # writes image test.bmp to disk
Run Code Online (Sandbox Code Playgroud)

但它让我获得了我的相机能够拍摄的15MP静态照片.我从上面得到的东西远远不如我click拍的照片.

那么,有没有办法拍照(就像它可以在官方的WebCam软件中完成)?

python opencv

6
推荐指数
1
解决办法
5万
查看次数

使用Python在OpenCV中提高相机捕获分辨率

它的2012和cv2在这里。这篇旧文章向您展示如何在opencv的1.1 相机捕获中更改opencv版本中的相机分辨率, 但是这些功能在cv2或其随附的cv2.cv模块中不可用(opencv 2.4.1是最新的)

有谁知道如何通过python为opencv更改相机分辨率?我不是在寻找一种c ++解决方案,而是从cv2随附的python(2.7)访问的一种解决方案。导入单独的模块是可以接受的。

如其他地方所述,VideoCapture.set函数不起作用。

video opencv resolution capture

5
推荐指数
0
解决办法
1677
查看次数

OpenCV - 在 Java 中更改相机分辨率

似乎在 Java opencv 中设置网络摄像头分辨率的标准方法不起作用。我执行以下操作:

VideoCapture v = new VideoCapture();

boolean wset = v.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, 1280);
boolean hset = v.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, 800);

System.out.println(wset);
System.out.println(hset);

v.open(1);
Run Code Online (Sandbox Code Playgroud)

哪个打印:

> false
> false
Run Code Online (Sandbox Code Playgroud)

...并且不会改变相机分辨率。它似乎停留在 640x480。我知道相机没有问题,因为我可以使用 C++ 绑定成功地将分辨率设置为 1280x800。

另外 -v.getSupportedPreviewSizes()不起作用。它返回一个错误:

HIGHGUI ERROR: V4L2: getting property #1025 is not supported
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

java camera opencv resolution

5
推荐指数
2
解决办法
8238
查看次数

为什么不总是设置框架宽度/高度?

有大量问题和人们询问如何设置框架高度/宽度的相应答案。下面是一个小样本:

我知道 OpenCV 有时会在设置框架高度/宽度时出现问题。就我而言,我可以将宽度/高度范围设置为 640 x 512。相机的驱动程序由制造商提供(即不是 v4l2 或类似的东西)。我可以提供哪些调试信息,或者我如何帮助他们理解为什么我不能设置更高的宽度/帧。驱动程序是否有问题,OpenCV 两者都有?

import cv2
c = cv2.VideoCapture(1)
c.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 1280)
c.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 1024)
Run Code Online (Sandbox Code Playgroud)

我在 Python 中使用 Ubuntu 14.04 和 OpenCV 2.4.8。

我发现这个问题有一个公认的答案,表明我应该能够让它发挥作用。我不知道如何做这部分:

您可以做的是调查您的相机驱动程序,为 OpenCV 制作补丁并将其发送到 code.opencv.org。这样别人会喜欢你的工作,就像你喜欢别人的一样。

python camera opencv driver

5
推荐指数
1
解决办法
5403
查看次数

使用ctypes从相机读取帧缓冲区

我在使用python读取相机的帧缓冲区时遇到问题。相机(Xenics)通过USB连接,相机随附一个dll。我使用ctypes访问此dll。我使用的代码主要受lantz的python模块(lantz_drivers_xenics)启发。
dll提供了XC_CopyFrameBuffer我用来将帧缓冲区复制到numpy数组的功能。

虽然原则上采集工作正常,但麻烦在于以中等或高速连续读取帧缓冲区。相机随附的已编译软件能够以24 fps的速度读出相机。在我的程序中,我想读取5到25 fps之间的帧缓冲区。但是,我无法达到此值,因为调用XC_CopyFrameBuffer函数所需的时间在0到〜0.5秒之间;它通常很低,但是大约每三帧大约需要0.5秒。

我的真实程序更复杂,使用线程并处理获取的图像。但是我将代码简化为一个重现问题并已附加的最小示例。它的文本和图形输出如下所示。我的问题是:

  1. 有没有人遇到过类似的相机问题?
  2. 有没有人使用过Xenics相机,并通过python中的ctypes连接到它,并可以提供一个可行的示例?
  3. 我(和/或lantz_drivers_xenics)使用dll的方式中是否存在一些明显或隐藏的问题?

这是我正在使用的代码:

import time
import ctypes 
import threading
import numpy as np
from numpy.ctypeslib import ndpointer


calibration_file =  r"C:\Path\to\some\calibrationfile.xca"
dll = "C:\\Programme\\X-Control\\xcamera.dll"
lib = ctypes.WinDLL(dll) #for xcamera we need ctypes.WinDLL

exposure_time = 300 #microseconds (us)
readlock = threading.Lock()

#add types    
lib.XC_OpenCamera.argtypes = [ctypes.c_uint]
lib.XC_CloseCamera.argtypes = [ctypes.c_uint]
lib.XC_IsInitialised.argtypes = [ctypes.c_uint]
lib.XC_LoadFromFile.argtypes = [ctypes.c_uint, ctypes.c_char_p]
lib.XC_LoadCalibrationPack.argtypes = [ctypes.c_uint, ctypes.c_char_p]
lib.XC_SetGainCamera.argtypes = [ctypes.c_uint, ctypes.c_double]
lib.XC_SetIntegrationTime.argtypes …
Run Code Online (Sandbox Code Playgroud)

python camera ctypes framebuffer driver

5
推荐指数
0
解决办法
727
查看次数

如何使用 OpenCV 和 python 访问我的 USB 摄像头?

我在使用 OpenCV 和 python 访问 USB 摄像头时遇到问题。

我收到以下错误消息,我理解这意味着没有捕获帧?

error: OpenCV(3.4.1) C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\highgui\src\window.cpp:356: error: (-215) size.width>0 && size.height>0 in function cv::imshow
Run Code Online (Sandbox Code Playgroud)

我的相机如下: https: //www.gophotonics.com/products/scientific-industrial-cameras/point-grey-research-inc/45-571-cm3-u3-50s5m-cs

简单代码如下。有什么想法吗?一些帮助我会感激

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
while(True):
    ret, frame = cap.read()

    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

python opencv usb-camera

5
推荐指数
1
解决办法
2万
查看次数

OpenCV相机属性对话框

几个星期前,我在网上看到你可以显示一个带有相机属性的小对话框/菜单.在此菜单中,用户可以更改对比度,亮度......但我再也找不到它了.有人知道获得此对话框的代码吗?

先感谢您!

opencv

0
推荐指数
1
解决办法
3253
查看次数