我正试图从IP摄像机实时捕捉图像。该流在VLC中工作得非常好,但是OpenCV的cvqueryframe()
似乎混淆并损坏了传入的图像,以至于无法识别。
同样,从文件捕获工作很好,但不是实时流。如果它有不同,我使用rtsp连接URL;我也尝试了两个不同型号的相机(不同品牌),问题仍然存在。
此外,(我假设)编解码器正在输出以下几种错误:错误位于MB:1746
和隐藏6000直流、6000交流、6000毫伏错误
。
我能做什么?
我不知道它是否有帮助(因为我不是一个有经验的C++开发人员),但我最近设法从IP相机中获得了一个流。下面是一个快速测试:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
VideoCapture ipCam;
Mat frame;
const string LOCATION = "rtsp://192.168.0.200:554/rtsph264vga";
if(!ipCam.open(LOCATION)) {
cout << "Error opening video stream or file" << endl;
return -1;
}
for(;;) {
if(!ipCam.read(frame)) {
cout << "No frame" << endl;
waitKey();
}
imshow("cam", frame);
if(waitKey(1) >= 0) break;
}
return 0;
}
在使用C++之前,我已经将摄像机设置为导出到H264 VGA(因为它在我使用的cam上默认情况下没有启用),并确保我已经用VLC运行了流。我使用的是启用了fffmpeg的OpenCV 2.4.1。据我所知,ffmpeg与OpenCV的集成可以从OpenCV 2.0向上提供。
当我必须将cv代码与其他C++代码集成合并时,我确实遇到了一些问题,因为我为64位ARCH构建了OpenCV和ffmpeg+依赖项。另一个代码依赖于许多32位库。VideoCapture类是highgui库的一部分,这主要是您需要担心的。如果它没有编译与ffmpeg支持,您将得到一个错误或警告,因为VideoCapture将无法转码的内容。
我不确定这是最好的选择,但您可以尝试从VLC流/转码流(通过在开放源码/网络选项卡中勾选流/保存)
我刚买了一台onwave ip相机,主要目的是使用Android Tablet进行图像处理和监控。在本机编码的同时,用FFMPEG对java、python和C++进行交叉编译。Videocapture类与ip相机的url配合工作非常完美。它显示了使用rtsp协议进行流的ipcamera的帧。例如在C++中 代码工作得很好,它给了我局域网上相机流的帧,几乎没有延迟。对于python和对于Java编译
我正在尝试使用html2canvas将div捕获到图像中。我有一个带滚动条的div。我想把这个div元素转换成image。当运行html2canvas时,它只捕获屏幕的可见部分,截断从滚动中隐藏的所有内容。设置“高度、宽度”属性没有影响。我使用的是html2canvas版本0.4。1. 感谢帮助。
我想首先捕获图像并将其查看到ImageView,然后单击将图像保存到FireBase。
我有一系列图像,我想计算中间图像(以去除运动元素)。直观地说,硬编码一个循环以遍历所有像素将有一个总的运行时间,以及相当大的内存使用量。有没有办法在OpenCV中轻松实现这一点?(我对平均值不感兴趣,我需要做一个中位数)。我是为Android写这篇文章的(使用OpenCV4Android),所以显然计算能力是有限的。
我在我的网络应用程序中实现了一个输入文件图像捕捉,让用户拍照并上传。然而,当他们把平板电脑颠倒过来时,图像会出现颠倒。当在应用程序之外使用相机应用程序时,你如何拍照并不重要,它总是颠倒的。 如何在我的web应用程序中强制执行此操作?