精华内容
下载资源
问答
  • 一个USB HUB连接多个摄像头同时工作问题处理
    万次阅读
    2018-07-03 13:08:37

    一个USB HUB连接多个摄像头同时工作问题处理


    如需转载请标明出处:http://blog.csdn.net/itas109
    QQ技术交流群:129518033

    目录


    1.起源

    多个(免驱)USB摄像头连同一个USB HUB的同时进行图像处理。

    2.问题

    一种说法是单个USB控制最大传输理论上为70多MB,打个折扣约50MB的实际速度,而640*480的视频大约需要26MB,所以最多带两个。
    多摄像头一定能做,但是如何做网络上公开的经验很少。

    3.解决思路

    实验了一些代码,验证了真的只能同时显示两个摄像头的视频,但是好消息是一个USB HUB上连N个摄像头这些摄像头都是能够获取到视屏。所以,给出以下建议:

    假设一个USB HUB上连了A、B、C、D四个摄像头:

    1. 写个时间轮续,间隔多少秒后停下两个显示另两个。

    2.一个USB control 上最多连两个,那就多连几个USB control。(注意:有的电脑有很多的USB口但不见得有多个USB control)。

    3.PCI的USB扩展口,值得你拥有。

    4.据说高手可以写驱动解决这个问题

    注意:
    当只接两个摄像头时,也有可能无法正常工作,比如其中一个是高清摄像头,占用带宽很大,所以也无法同时工作。可以尝试降低分辨率等手段降低传输数据大小。


    Refrence:
    https://blog.csdn.net/machaoyayiyaho/article/details/42053895
    https://bbs.csdn.net/topics/392295632

    觉得文章对你有帮助,可以用微信扫描二维码捐赠给博主,谢谢!
    微信
    如需转载请标明出处:http://blog.csdn.net/itas109
    QQ技术交流群:129518033

    更多相关内容
  • CAMERA_COUNT=2 #摄像头个数 url="rtsp://admin:12345678@192.168.128.45"#外置摄像头地址及密码 # 不同进程不能共享内存,定义队列进行进程通信 q = Queue() def video_read(id): camera_id = id #使用笔记本自带...
  • h5 多个摄像头选择

    2018-08-15 17:43:50
    pc端 html5页面可以选择多个摄像头。也可以用于手机端。
  • python+openCV利利用用摄摄像像头头实实现现人人员员活活动动检检测测 这篇文章主要为大家详细介绍了python+openCV利用摄像头实现人员活动检测具有一定的参考价值感兴趣的 小伙伴们可以参考一下 文实例为大家分享了...
  • 这是一个通过C++获取电脑上连接的多个摄像头的名称和编号,方便opencv开发的时候直接通过摄像头编号获取对应摄像头的数据,也方便直播开发获取摄像头名称。
  • opencv 打开多个摄像头

    2013-11-30 16:26:22
    opencv打开多个摄像头的示例,使用的是opencv2.4.6版本,vc2008
  • c#操作多个摄像头

    2013-09-27 15:02:18
    有两种方法实现 分别是AForge和windows api 打开摄像头,关闭摄像头,拍照功能
  • 直接从IP摄像头获取数据(H265数据需稍微改动),然后作为服务器转发,支持多个摄像头同时连接。摄像头的地址和用户名密码在代码中更改即可。下载后可留言交流。
  • 主要为大家详细介绍了Python通过cv2读取多个USB摄像头,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • H5调用本地摄像头进行照片拍摄、证件采集如果本地连接有多个摄像头,可获取多个摄像头列表,可选择不同摄像头进行不同类型的照片采集
  • OpenCV图像处理--一个窗口显示多个摄像头

    【一】原理
    1、开启两个摄像头,系统默认从0开始查找,两个摄像头使用0和1就够啦,然后把显示窗口尺寸固定,这里用的是320和240

    VideoCapture capture1(0);
    VideoCapture capture2(1);
    

    2、创建一个黑色图片,大小刚好可以容纳两个摄像头窗口,width=640,height=240

    Mat frame(240,640,CV_8UC3,Scalar(0,0,0));
    

    3、创建ROI区域

    ROIImage1 = frame(Rect(0,0,320,240));
    ROIImage2 = frame(Rect(320, 0, 320, 240));
    

    4、创建掩膜

    掩膜必须是灰度图,因此先要把图片转化为灰度图

    cvtColor(frame1, gray_Image1,CV_RGB2GRAY);
    cvtColor(frame2, gray_Image2, CV_RGB2GRAY);
    

    然后把图片复制给掩膜

    mask1 = gray_Image1;
    mask2 = gray_Image2;

    5、把掩膜复制到ROI区域,frame1为要覆盖的图片,意思就是把frame1复制ROI区域的掩膜上。

    frame1.copyTo(ROIImage1, mask1);
    frame2.copyTo(ROIImage2, mask2);
    

    【二】效果图
    在这里插入图片描述
    【三】源码

    #include <iostream>
    #include <opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    //【画框】
    void Draw_rectangle(Mat img,Point pt1, Point pt2)
    {
        rectangle(img, pt1, pt2, Scalar(0, 255, 0), 2, 8, 0);
    }
    
    int main(int argc, char *argv[])
    {
    
        Mat srcImage,srcImage2,srcImage3,srcImage4;
        Mat ROIImage1,ROIImage2,ROIImage3,ROIImage4,mask1,mask2,mask3,mask4,gray_Image1, gray_Image2,gray_Image3,gray_Image4;
        VideoCapture cap(0);
        VideoCapture cap1("car_input.mp4");
        VideoCapture cap2("carMove2.mp4");
        VideoCapture cap3("carMove.mp4");
        cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
        cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
        cap1.set(CV_CAP_PROP_FRAME_WIDTH, 320);
        cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
        cap2.set(CV_CAP_PROP_FRAME_WIDTH, 320);
        cap2.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
        cap3.set(CV_CAP_PROP_FRAME_WIDTH, 320);
        cap3.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
    
        if (!cap.isOpened())
        {
            cout << "VideoCapture open fail" << endl;
            return 0;
        }
        if (!cap1.isOpened())
        {
            cout << "VideoCapture1 open fail" << endl;
            return 0;
        }
    
        if (!cap2.isOpened())
        {
            cout << "VideoCapture2 open fail" << endl;
            return 0;
        }
        if (!cap3.isOpened())
        {
            cout << "VideoCapture3 open fail" << endl;
            return 0;
        }
        Mat frame3(480,640,CV_8UC3,Scalar(0,0,0));
        char temp_1[20];
        char temp_2[20];
        char temp_3[20];
        char temp_4[20];
        while (cap.isOpened())
        {
            cap >> srcImage;
            cap1 >> srcImage2;
            cap2 >> srcImage3;
            cap3 >> srcImage4;
    
            resize(srcImage2, srcImage2,Size(320,240));
            resize(srcImage3, srcImage3,Size(320,240));
            resize(srcImage4, srcImage4,Size(320,240));
            Draw_rectangle(srcImage, Point(0,0),Point(srcImage.cols, srcImage.rows));
            Draw_rectangle(srcImage2, Point(0, 0), Point(srcImage2.cols, srcImage2.rows));
            Draw_rectangle(srcImage3, Point(0, 0), Point(srcImage3.cols, srcImage3.rows));
            Draw_rectangle(srcImage4, Point(0, 0), Point(srcImage4.cols, srcImage4.rows));
    
            sprintf(temp_1, "capture1");
            putText(srcImage, temp_1, Point(srcImage.cols / 16, srcImage.rows / 10), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(255, 0, 255));
            sprintf(temp_2, "capture2");
            putText(srcImage2, temp_2, Point(srcImage2.cols / 16, srcImage2.rows / 10), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(255, 0, 255));
            sprintf(temp_3, "capture3");
            putText(srcImage3, temp_3, Point(srcImage3.cols / 16, srcImage3.rows / 10), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(255, 0, 255));
            sprintf(temp_4, "capture4");
            putText(srcImage4, temp_4, Point(srcImage4.cols / 16, srcImage4.rows / 10), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(255, 0, 255));
    
    
            ROIImage1 = frame3(Rect(0,0,320,240));
            ROIImage2 = frame3(Rect(320, 0, 320, 240));
            ROIImage3 = frame3(Rect(0, 240, 320, 240));
            ROIImage4 = frame3(Rect(320, 240, 320, 240));
            //imshow("ROIImage1", ROIImage1);
            //imshow("ROIImage2", ROIImage2);
            cvtColor(srcImage, gray_Image1,CV_RGB2GRAY);
            cvtColor(srcImage2, gray_Image2, CV_RGB2GRAY);
            cvtColor(srcImage3, gray_Image3, CV_RGB2GRAY);
            cvtColor(srcImage4, gray_Image4, CV_RGB2GRAY);
    
            mask1 = gray_Image1;
            mask2 = gray_Image2;
            mask3 = gray_Image3;
            mask4 = gray_Image4;
            srcImage.copyTo(ROIImage1, mask1);
            srcImage2.copyTo(ROIImage2, mask2);
            srcImage3.copyTo(ROIImage3, mask3);
            srcImage4.copyTo(ROIImage4, mask4);
    //        imshow("ROIImage1", srcImage);
    //        imshow("ROIImage2", srcImage2);
    //        imshow("srcImage3", srcImage3);
    //        imshow("srcImage4", srcImage4);
            imshow("main", frame3);
            if (waitKey(25)==27)
            {
                break;
            }
        }
        cap.release();
        destroyAllWindows();
        return 0;
    }
    
    展开全文
  • 1、C# 多个ip摄像头画面预览以及截图界面 2、winform VS2013 .NET4 Client Profile 3、测试摄像头:海康威视 亲测有效哦,绝对物超所值! 4、需要输入IP地址,端口号,用户名和密码。预览、抓图、客户端录像基本...
  • python-opencv 拼接多个摄像头

    千次阅读 热门讨论 2019-11-17 16:18:00
    opencv拼接多个摄像头通过hstack, vstack拼接通过一个大的矩阵显示总结 通过hstack, vstack拼接 代码 import cv2 import numpy as np cap = cv2.VideoCapture(0) cap_t = cv2.VideoCapture(1) while cap.isOpened():...

    通过hstack, vstack拼接

    代码

    import cv2
    import numpy as np
    cap = cv2.VideoCapture(0)
    cap_t = cv2.VideoCapture(1)
    while cap.isOpened():
    	ret, frame = cap.read()
    	ret_t, frame_t = cap_t.read()
    	frame_h = np.hstack((frame, frame_t)) # frame_v = np.vstack((frame, frame_t))
    	cv2.imshow('title', frame_h)
    	if cv2.waitKey(10) == 113: #点击q的时候退出
    		break
    

    效果(hstack):
    在这里插入图片描述
    hstack是横向拼接,vstack是纵向拼接

    通过一个大的矩阵显示

    代码

    import cv2
    import numpy as np
    
    frame_h = np.zeros((480, 1280, 3), dtype=np.uint8) # 创建一个1280*640的矩阵用来显示
    cap = cv2.VideoCapture(0)
    cap_t = cv2.VideoCapture(1)
    while cap.isOpened():
    	ret, frame = cap.read()
    	ret_t, frame_t = cap_t.read()
    	frame_h[0:480, 0:640, :] = frame
    	frame_h[0:480, 640:1280, :] = frame_t
    	cv2.imshow('title', frame_h)
    	if cv2.waitKey(10) == 113:
    		break
    

    效果
    在这里插入图片描述
    注意,再创建大的矩阵的使用要填入dtype=np.uint8不然会出现显示白屏或是显示色彩不对的情况

    总结

    第一种方法适用于摄像头或是图片数量固定的时候,通过hstack和vstack拼接每次仅能两张图片拼接。第二种方法适用于摄像头数量不定的情况,设置好大的显示矩阵后,只需将你想要显示的区域填入内容就可以显示,其他部分会显示黑色。

    展开全文
  • (1)利用python进程程或线程实时读取远程IP摄像头视频 (2)Pyhon cv2.VideoWriter 保存视频 整合成如下代码,可以对路网络摄像头图像实时采集并分别保存视频。或者自己改写代码,直接保存每路的实时图像也...
  • Android 同时打开路USB摄像头,采用UVC驱动。目前demo内是最多打开六路
  • 多个摄像头打开

    千次阅读 2019-07-22 09:39:18
    经常性的图像处理用到一个摄像头就行了,但是有时候也需要用到多个摄像头,这里介绍下如何打开多个摄像头。这里介绍三种打开方式 opencv ,MFC,QT, 其实QT和MFC都是引用opencv的库总体上程序没有太多的变化。。 介绍...

    经常性的图像处理用到一个摄像头就行了,但是有时候也需要用到多个摄像头,这里介绍下如何打开多个摄像头。这里介绍三种打开方式 opencv ,MFC,QT,
    其实QT和MFC都是引用opencv的库总体上程序没有太多的变化。。
    介绍下QT打开三个摄像头,,,,,,
    VideoCapture cap1;
    VideoCapture cap2;
    VideoCapture cap3;
    Mat frameleft,frameright,framecenture,framelefthsv,framegray;
    cap1.open(0);
    cap2.open(1);
    cap3.open(2);
    while(1)
    {
    cap1.read(frameleft);
    cap2.read(frameright);
    cap3.read(framecenture);
    cvtColor(frameleft,framelefthsv,COLOR_BGR2HSV);
    cvtColor(frameright,framegray,COLOR_BGR2GRAY);

        QImage imgleft=mat2QImage(framelefthsv);
        QImage imgright=mat2QImage(framegray);
        QImage imgcen=mat2QImage(framecenture);
    
        ui->label->setScaledContents(true);
        ui->label_2->setScaledContents(true);
        ui->label_3->setScaledContents(true);
    
         ui->label->setPixmap(QPixmap::fromImage(imgleft));
         ui->label_2->setPixmap(QPixmap::fromImage(imgright));
         ui->label_3->setPixmap(QPixmap::fromImage(imgcen));
         waitKey(30);
    

    在这里插入图片描述在这里插入图片描述MFC…
    在这里插入图片描述opencv…
    在这里插入图片描述好吧,原本想再写个EMGUCV打开多个摄像头的,,突然发现4.0的和3.0的不太一样了,,,以前用的是3.0的。。。要再看看了

    展开全文
  • (1) 能不能用树莓派同时控制多个摄像头进行拍照 1. 方法(一) 树莓派是一种卡片计算机,拥有很高的运算能力,我们项目做动物监测系统,要求能够传输视频数据,并将视频上传至服务器,当初我的想法是采用推流,将...
  • Opencv无法同时连接多个摄像头

    千次阅读 2019-05-25 22:27:01
    我在最近的一次实验中尝试使用opencv同时调用 ...经查阅资料得知是电脑的usb带宽有限,不足以同时支撑多个摄像头。 目前已知可行的方法如下: 1. 不要同时生成多个 VideoCapture 实例。你可以只保留一个,然后每拍完...
  • Python OpenCV 多个摄像头拍摄视频拼接显示在一个窗口里 flyfish import cv2 import numpy as np videoLeft = cv2.VideoCapture(0) videoRight = cv2.VideoCapture(1) width = (int(videoLeft.get(cv2.CAP_PROP_...
  • 我们知道由于USB带宽与摄像头像素的因素,一台电脑通常只能同时启动2个摄像头。 在很项目中我们需要启动2个以上就带来了麻烦。 可以通过摄像头轮询的方式解决这个问题,随意多少个都可以启动。 效果视频连接:...
  • 论述实时处理由若干个摄像头采集的图像,即利用视频图像边界重叠的部分进行拼接,形成全 景式的视频,然后实时显示拼接后的视频图像
  • 直接从IP摄像头获取数据,然后作为服务器转发,支持多个摄像头同时连接。摄像头的地址和用户名密码在代码中更改即可。
  • 多个按键控制多路摄像头显示关闭
  • 1、其中C++获取多个摄像头的名称,然后根据名称对应其编号,从而可以使用opencv进行按编号打开特定的摄像头: #include<iostream> #include "strmif.h" #include <initguid.h> #include<vector>...
  • [RK3399]多个摄像头

    千次阅读 2019-03-26 00:14:35
    https://blog.csdn.net/kris_fei/article/details/81508302
  • 有多少个摄像头则添加多少个source 注意的是每个摄像头可以有多个profiles(至少1个),且这些个profiles的source一致(及表明来源于同一个摄像头) ...
  • 功能实现同时打开两个摄像头,并保存avi视频文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,241
精华内容 57,696
关键字:

多个摄像头