gpt4 book ai didi

c、opencv——通过ip访问相机JPG图像

转载 作者:太空狗 更新时间:2023-10-29 17:23:06 24 4
gpt4 key购买 nike

我已经阅读了很多关于在 OpenCV 2.3.1 中通过 IP 流式传输图像的帖子,但我仍然无法让我的程序运行。

我从 https://market.android.com/details?id=com.pas.webcam&hl=en 下载了 Android 版 IP 网络摄像头 , 最近学习了 OpenCV 以从我的 Android 手机相机中检索图像。

它的内置手册说手机摄像头的图像可以位于http://the.phone.ip.address:8080/shot.jpg。 .我已经从浏览器中打开它好几次了,它看起来总是很好。我还手动构建了 OpenCV,支持 FFmpeg

到目前为止我已经尝试过

CvCapture* webcam = cvCaptureFromFile("http://192.168.1.220:8080/shot.jpg");

但它返回 NULL 并输出

[image2 @ 0xd701e0]Could not find codec parameters (Video: mjpeg, yuv420p)

我也试过用rtsp替换http,还是不行。我还尝试将 url 替换为其他一些图片 url(一个直接链接到来自 Google Images 的随机图片,一个来自本地主机),但它总是会因段错误而终止。

这是我的完整来源

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>

int main(int argc, char* argv[])
{
CvCapture* webcam = cvCaptureFromFile("http://192.168.1.220:8080/shot.jpg");
if(!webcam)
{
fprintf(stderr, "cannot open webcam\n");
return 1;
}

IplImage* img = cvQueryFrame(webcam);
if(!img)
{
fprintf(stderr, "cannot get image\n");
return 1;
}

cvNamedWindow("test", CV_WINDOW_AUTOSIZE);
cvShowImage("test", img);
cvWaitKey(0);
cvReleaseImage(&img);
/**/ cvReleaseCapture(&webcam); /**/
cvDestroyWindow("test");
return 0;
}

OpenCV 真的可以通过 IP 读取图像吗?还是我遗漏了什么?

最佳答案

我不是特别熟悉 openCV,但是看了一分钟文档后,我突然想到两件事:-

首先,您在这里处理的不是真正的视频流:您的 Android 应用程序只是使当前的 JPEG 捕获可用,您必须不断地对其重新采样。因为它是图像而不是视频,所以您应该改用 cvLoadImage()

其次,您传递的是 URL,而不是文件名。在尝试使用 openCV 打开图像之前,您需要一种使用 HTTP 将图像提取到本地文件的方法。

我建议您从浏览器本地保存 JPEG 文件的快照,然后尝试让您的代码使用它。从本地文件开始工作后,尝试添加 HTTP 获取内容。

关于c、opencv——通过ip访问相机JPG图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com