摄像头服务器返回消息错误,网络摄像头未连接时OpenCV返回错误消息

我在Windows10个人电脑上使用OpenCV3.3和Python2.7。在我的一个项目中,我连接了一个外部摄像头来进行跟踪。只要网络摄像头连接好,一切都能正常工作。如果在程序运行前/程序运行期间断开网络摄像头,程序将崩溃。当我尝试一个虚拟程序来检查出什么问题时,我注意到程序在我调用cv2.VideoCapture(0)本身的行中崩溃。在

代码片段:

cap=cv2.VideoCapture(0)--这条线在主程序中,如果摄像机没有连接,程序就会在此时崩溃

--下面几行在函数内,由主程序根据其他输入调用r, a = cap.read()

while not r:print 'Reconnect Camera'

r , a = cap.read()

打印“一切正常!”在

我把while循环放在那里,以防止在cap=cv2.VideoCapture(0)之后但在之前断开相机连接时出现问题上限读数()函数内部。即使在相机断开连接之后,当“r”值在第二次迭代中变为真时,这也不起作用。我在下面放了一个图表来表示“r”与相机连接的行为。在

我可能做错了什么!我怎么解决这个?!提前谢谢各位!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一个开源的计算机视觉库,它可以用于图像处理、计算机视觉和机器学习等领域。在使用OpenCV调用UDP网络摄像头,可以通过以下步骤实现: 1. 在CMakeList.txt文件中添加UDP库的链接。 2. 在代码中使用OpenCV库获取UDP网络摄像头的视频流。 3. 将获取到的视频流通过UDP协议传送至服务器端。 具体实现步骤可以参考以下代码: ``` #include <opencv2/opencv.hpp> #include <iostream> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> using namespace cv; using namespace std; int main(int argc, char** argv) { // 创建UDP套接字 int sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket"); return -1; } // 设置服务器地址 struct sockaddr_in servaddr; memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(8888); servaddr.sin_addr.s_addr = inet_addr("192.168.1.100"); // 打开摄像头 VideoCapture cap(0); if (!cap.isOpened()) { cerr << "Failed to open camera." << endl; return -1; } // 循环获取视频流并发送至服务器 Mat frame; while (true) { cap >> frame; if (frame.empty()) { cerr << "Failed to capture frame." << endl; break; } // 将视频流转换为字符串并发送至服务器 vector<uchar> buf; imencode(".jpg", frame, buf); sendto(sockfd, buf.data(), buf.size(), 0, (struct sockaddr*)&servaddr, sizeof(servaddr)); } // 关闭套接字和摄像头 close(sockfd); cap.release(); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值