使用 OpenCV 捕获的显微镜图像的解码问题
Decoding Problems with Images from Microscope captured with OpenCV
我正在尝试使用 OpenCV 从 EVOCAM II Microscope from Vision Engineering 捕获图像。它在其手册中说,它可以使用 USB 3.0 数据线插入计算机,然后用作普通网络摄像头。
因此,我使用这个非常简单的片段从相机中捕捉图像:
import cv2
camera = cv2.VideoCapture(0)
ret, frame = camera.read()
if ret:
cv2.imwrite('./test.png', frame)
然而,当我应该得到 1920px x 1080px
RGB 图片时,我得到 640px x 480px
带有奇怪伪像的图像:
我试图在 VLC 或 AMCap 等其他软件上测试相机,但我要么得到 640px x 480px
黑色图像否则软件甚至无法开始捕获。
我想知道这是编码问题还是相机如何向计算机声明本身。
我可以通过修改 OpenCV 中的一些参数来解决这个问题还是有什么不同?
非常感谢您的宝贵时间,
编辑 1:
我的 conda 环境中 opencv_version -v
的输出:
General configuration for OpenCV 3.4.2 =====================================
Version control: unknown
Extra modules:
Location (extra): /opt/conda/conda-bld/opencv-suite_1533641454250/work/opencv_contrib-3.4.2/modules
Version control (extra): unknown
Platform:
Timestamp: 2018-08-07T11:32:43Z
Host: Linux 2.6.32-696.10.1.el6.x86_64 x86_64
CMake: 3.12.0
CMake generator: Unix Makefiles
CMake build tool: /usr/bin/gmake
Configuration: Release
CPU/HW features:
Baseline: SSE SSE2 SSE3
requested: SSE3
Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
SSE4_1 (3 files): + SSSE3 SSE4_1
SSE4_2 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2
FP16 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
AVX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
AVX2 (9 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
AVX512_SKX (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_SKX
C/C++:
Built as dynamic libs?: YES
C++11: YES
C++ Compiler: /opt/conda/conda-bld/opencv-suite_1533641454250/_build_env/bin/x86_64-conda_cos6-linux-gnu-c++ (ver 7.2.0)
C++ flags (Release): -fvisibility-inlines-hidden -std=c++11 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -O3 -DNDEBUG -DNDEBUG
C++ flags (Debug): -fvisibility-inlines-hidden -std=c++11 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -g -DDEBUG -D_DEBUG
C Compiler: /opt/conda/conda-bld/opencv-suite_1533641454250/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc
C flags (Release): -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -O3 -DNDEBUG -DNDEBUG
C flags (Debug): -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -g -DDEBUG -D_DEBUG
Linker flags (Release): -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib -L/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib
Linker flags (Debug): -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib -L/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib
ccache: NO
Precompiled headers: YES
Extra dependencies: dl m pthread rt
3rdparty dependencies:
OpenCV modules:
To be built: aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dpm face features2d flann freetype fuzzy hdf hfs highgui img_hash imgcodecs imgproc java java_bindings_generator line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 python_bindings_generator reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
Disabled: js world
Disabled by dependency: -
Unavailable: cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv matlab ovis sfm ts viz
Applications: apps
Documentation: NO
Non-free algorithms: NO
GUI:
Media I/O:
ZLib: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libz.so (ver 1.2.11)
JPEG: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libjpeg.so (ver 90)
WEBP: build (ver encoder: 0x020e)
PNG: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libpng.so (ver 1.6.34)
TIFF: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libtiff.so (ver 42 / 4.0.9)
JPEG 2000: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libjasper.so (ver 2.0.14)
OpenEXR: build (ver 1.7.1)
HDR: YES
SUNRASTER: YES
PXM: YES
Video I/O:
DC1394: NO
FFMPEG: YES
avcodec: YES (ver 58.18.100)
avformat: YES (ver 58.12.100)
avutil: YES (ver 56.14.100)
swscale: YES (ver 5.1.100)
avresample: YES (ver 4.0.0)
GStreamer: NO
libv4l/libv4l2: NO
v4l/v4l2: linux/videodev.h linux/videodev2.h
gPhoto2: NO
Parallel framework: OpenMP
Trace: YES (with Intel ITT)
Other third-party libraries:
Intel IPP: 2017.0.3 [2017.0.3]
at: /opt/conda/conda-bld/opencv-suite_1533641454250/work/build/3rdparty/ippicv/ippicv_lnx
Intel IPP IW: sources (2017.0.3)
at: /opt/conda/conda-bld/opencv-suite_1533641454250/work/build/3rdparty/ippicv/ippiw_lnx
Lapack: NO
Eigen: YES (ver 3.3.3)
Custom HAL: NO
Protobuf: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libprotobuf.so (3.5.1)
Python 2:
Interpreter: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/bin/python (ver 2.7.15)
Libraries: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/lib/libpython2.7m.so (ver 2.7.15)
numpy: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/lib/python2.7/site-packages/numpy/core/include (ver 1.11.3)
packages path: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/lib/python2.7/site-packages
Python 3:
Interpreter: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/bin/python (ver 3.7)
Libraries: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/lib/libpython3.7m.so (ver 3.7.0)
numpy: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/lib/python3.7/site-packages/numpy/core/include (ver 1.11.3)
packages path: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/lib/python3.7/site-packages
Python (for build): /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/bin/python
Java:
ant: /usr/bin/ant (ver 1.7.1)
JNI: /usr/lib/jvm/java/include /usr/lib/jvm/java/include/linux /usr/lib/jvm/java/include
Java wrappers: YES
Java tests: NO
Install to: /home/lucas/anaconda3/envs/p35_gpu_jupyter
-----------------------------------------------------------------
不同种类的USB传输
您引用的页面并没有说该设备可以"plugged into a computer using a USB 3.0 cable and then used as a normal webcam"。该页面只说它有一个 usb 3.0 接口。您引用的页面中唯一可用的资源是小册子,其中也没有说明其即插即用。
在视觉设备和成像设备领域,usb 之上的通用接口是"usb vision" standard。制造此类设备的供应商提供专门的驱动程序,并且通常提供有关如何与流行库(如 openCV)交互的示例代码。与即插即用相比,使用符合此标准的设备可提供更高的传输速率、更短的滞后时间和更低的 cpu 利用率。通常,还提供即插即用驱动程序,但您无法保证。如果除了 usb vision 之外还有这样的即插即用驱动程序,您会想改用 usb vision 驱动程序,因为它最有可能更好。
供应商对它是什么驱动程序只字不提,这让我立即产生了怀疑。我会在购买之前联系他们,并让他们解释为什么没有提到这一点(或者它可能隐藏在他们网页的某个地方?)
在 linux 上(在评论中你说你 运行 ubuntu 18.04),此即插即用功能来自 video-for-linux "v4l"。如果你想像上面那样使用你的设备,你需要确保供应商提供一个 v4l 驱动程序,它适用于你的 Linux.
版本
Ubuntu版本
截至撰写本文时(2018 年 11 月 19 日),Ubuntu 18.04 推出的时间还不够长,无法预期不常见用例的稳定性。如果此成像设备的供应商提供 v4l 接口驱动程序,则它很可能不稳定。如果可能,请尝试使用 Ubuntu 16。如果您发现它适用于 Ubuntu 16,即使您的驱动程序应该适用于 ubuntu 18,请务必通知开发人员您发现了一个错误。
TL;DR 使用的电缆是 USB 2.0,将其替换为 USB 3.0 解决了 Windows.
上的捕获问题
是的,我知道这听起来很愚蠢,但我收到这张奇怪图像的原因是 USB 电缆是 2.0 而不是 3.0。由于电缆已经插入相机,我没有费心去验证它,但将其更改为 3.0 使其立即在相机 Windows 应用程序上工作。该公司还确认 EVO Cam II 使用 DirectShow 格式.
生成信号
但是,当比较相机保存在 USB 驱动器上的图像和使用 USB 数据线拍摄的图像时,我发现质量并不相似。尤其是在我的情况下,使用 USB 数据线捕获的图像质量不够好。所以我不会再往这个方向追了。
但是,对于那些想从我离开的地方继续的人来说,这里有一些视觉工程支持人员给我的链接,可以让我在 Linux 上使用 OpenCV 捕获图像:
- Webcam DirectShow Properties Page in Python
- http://videocapture.sourceforge.net/
目前他们还没有直接的解决方案。
我正在尝试使用 OpenCV 从 EVOCAM II Microscope from Vision Engineering 捕获图像。它在其手册中说,它可以使用 USB 3.0 数据线插入计算机,然后用作普通网络摄像头。
因此,我使用这个非常简单的片段从相机中捕捉图像:
import cv2
camera = cv2.VideoCapture(0)
ret, frame = camera.read()
if ret:
cv2.imwrite('./test.png', frame)
然而,当我应该得到 1920px x 1080px
RGB 图片时,我得到 640px x 480px
带有奇怪伪像的图像:
我试图在 VLC 或 AMCap 等其他软件上测试相机,但我要么得到 640px x 480px
黑色图像否则软件甚至无法开始捕获。
我想知道这是编码问题还是相机如何向计算机声明本身。
我可以通过修改 OpenCV 中的一些参数来解决这个问题还是有什么不同?
非常感谢您的宝贵时间,
编辑 1:
我的 conda 环境中 opencv_version -v
的输出:
General configuration for OpenCV 3.4.2 =====================================
Version control: unknown
Extra modules:
Location (extra): /opt/conda/conda-bld/opencv-suite_1533641454250/work/opencv_contrib-3.4.2/modules
Version control (extra): unknown
Platform:
Timestamp: 2018-08-07T11:32:43Z
Host: Linux 2.6.32-696.10.1.el6.x86_64 x86_64
CMake: 3.12.0
CMake generator: Unix Makefiles
CMake build tool: /usr/bin/gmake
Configuration: Release
CPU/HW features:
Baseline: SSE SSE2 SSE3
requested: SSE3
Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
SSE4_1 (3 files): + SSSE3 SSE4_1
SSE4_2 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2
FP16 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
AVX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
AVX2 (9 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
AVX512_SKX (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_SKX
C/C++:
Built as dynamic libs?: YES
C++11: YES
C++ Compiler: /opt/conda/conda-bld/opencv-suite_1533641454250/_build_env/bin/x86_64-conda_cos6-linux-gnu-c++ (ver 7.2.0)
C++ flags (Release): -fvisibility-inlines-hidden -std=c++11 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -O3 -DNDEBUG -DNDEBUG
C++ flags (Debug): -fvisibility-inlines-hidden -std=c++11 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -g -DDEBUG -D_DEBUG
C Compiler: /opt/conda/conda-bld/opencv-suite_1533641454250/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc
C flags (Release): -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -O3 -DNDEBUG -DNDEBUG
C flags (Debug): -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/lucas/anaconda3/envs/p35_gpu_jupyter/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fopenmp -g -DDEBUG -D_DEBUG
Linker flags (Release): -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib -L/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib
Linker flags (Debug): -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib -L/home/lucas/anaconda3/envs/p35_gpu_jupyter/lib
ccache: NO
Precompiled headers: YES
Extra dependencies: dl m pthread rt
3rdparty dependencies:
OpenCV modules:
To be built: aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dpm face features2d flann freetype fuzzy hdf hfs highgui img_hash imgcodecs imgproc java java_bindings_generator line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 python_bindings_generator reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
Disabled: js world
Disabled by dependency: -
Unavailable: cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv matlab ovis sfm ts viz
Applications: apps
Documentation: NO
Non-free algorithms: NO
GUI:
Media I/O:
ZLib: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libz.so (ver 1.2.11)
JPEG: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libjpeg.so (ver 90)
WEBP: build (ver encoder: 0x020e)
PNG: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libpng.so (ver 1.6.34)
TIFF: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libtiff.so (ver 42 / 4.0.9)
JPEG 2000: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libjasper.so (ver 2.0.14)
OpenEXR: build (ver 1.7.1)
HDR: YES
SUNRASTER: YES
PXM: YES
Video I/O:
DC1394: NO
FFMPEG: YES
avcodec: YES (ver 58.18.100)
avformat: YES (ver 58.12.100)
avutil: YES (ver 56.14.100)
swscale: YES (ver 5.1.100)
avresample: YES (ver 4.0.0)
GStreamer: NO
libv4l/libv4l2: NO
v4l/v4l2: linux/videodev.h linux/videodev2.h
gPhoto2: NO
Parallel framework: OpenMP
Trace: YES (with Intel ITT)
Other third-party libraries:
Intel IPP: 2017.0.3 [2017.0.3]
at: /opt/conda/conda-bld/opencv-suite_1533641454250/work/build/3rdparty/ippicv/ippicv_lnx
Intel IPP IW: sources (2017.0.3)
at: /opt/conda/conda-bld/opencv-suite_1533641454250/work/build/3rdparty/ippicv/ippiw_lnx
Lapack: NO
Eigen: YES (ver 3.3.3)
Custom HAL: NO
Protobuf: /home/lucas/anaconda3/envs/p35_gpu_jupyter/lib/libprotobuf.so (3.5.1)
Python 2:
Interpreter: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/bin/python (ver 2.7.15)
Libraries: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/lib/libpython2.7m.so (ver 2.7.15)
numpy: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/lib/python2.7/site-packages/numpy/core/include (ver 1.11.3)
packages path: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/lib/python2.7/site-packages
Python 3:
Interpreter: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/bin/python (ver 3.7)
Libraries: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/lib/libpython3.7m.so (ver 3.7.0)
numpy: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/lib/python3.7/site-packages/numpy/core/include (ver 1.11.3)
packages path: /opt/conda/conda-bld/opencv-suite_1533641454250/work/py3/lib/python3.7/site-packages
Python (for build): /opt/conda/conda-bld/opencv-suite_1533641454250/work/py2/bin/python
Java:
ant: /usr/bin/ant (ver 1.7.1)
JNI: /usr/lib/jvm/java/include /usr/lib/jvm/java/include/linux /usr/lib/jvm/java/include
Java wrappers: YES
Java tests: NO
Install to: /home/lucas/anaconda3/envs/p35_gpu_jupyter
-----------------------------------------------------------------
不同种类的USB传输
您引用的页面并没有说该设备可以"plugged into a computer using a USB 3.0 cable and then used as a normal webcam"。该页面只说它有一个 usb 3.0 接口。您引用的页面中唯一可用的资源是小册子,其中也没有说明其即插即用。
在视觉设备和成像设备领域,usb 之上的通用接口是"usb vision" standard。制造此类设备的供应商提供专门的驱动程序,并且通常提供有关如何与流行库(如 openCV)交互的示例代码。与即插即用相比,使用符合此标准的设备可提供更高的传输速率、更短的滞后时间和更低的 cpu 利用率。通常,还提供即插即用驱动程序,但您无法保证。如果除了 usb vision 之外还有这样的即插即用驱动程序,您会想改用 usb vision 驱动程序,因为它最有可能更好。
供应商对它是什么驱动程序只字不提,这让我立即产生了怀疑。我会在购买之前联系他们,并让他们解释为什么没有提到这一点(或者它可能隐藏在他们网页的某个地方?)
在 linux 上(在评论中你说你 运行 ubuntu 18.04),此即插即用功能来自 video-for-linux "v4l"。如果你想像上面那样使用你的设备,你需要确保供应商提供一个 v4l 驱动程序,它适用于你的 Linux.
版本Ubuntu版本
截至撰写本文时(2018 年 11 月 19 日),Ubuntu 18.04 推出的时间还不够长,无法预期不常见用例的稳定性。如果此成像设备的供应商提供 v4l 接口驱动程序,则它很可能不稳定。如果可能,请尝试使用 Ubuntu 16。如果您发现它适用于 Ubuntu 16,即使您的驱动程序应该适用于 ubuntu 18,请务必通知开发人员您发现了一个错误。
TL;DR 使用的电缆是 USB 2.0,将其替换为 USB 3.0 解决了 Windows.
上的捕获问题是的,我知道这听起来很愚蠢,但我收到这张奇怪图像的原因是 USB 电缆是 2.0 而不是 3.0。由于电缆已经插入相机,我没有费心去验证它,但将其更改为 3.0 使其立即在相机 Windows 应用程序上工作。该公司还确认 EVO Cam II 使用 DirectShow 格式.
生成信号但是,当比较相机保存在 USB 驱动器上的图像和使用 USB 数据线拍摄的图像时,我发现质量并不相似。尤其是在我的情况下,使用 USB 数据线捕获的图像质量不够好。所以我不会再往这个方向追了。
但是,对于那些想从我离开的地方继续的人来说,这里有一些视觉工程支持人员给我的链接,可以让我在 Linux 上使用 OpenCV 捕获图像:
- Webcam DirectShow Properties Page in Python
- http://videocapture.sourceforge.net/
目前他们还没有直接的解决方案。