精华内容
下载资源
问答
  • 海康威视java读取摄像头数据
    2021-12-08 16:09:43

    GitHub - cyuaa/hikvision: 海康威视摄像头客流量统计

    基于海康威视摄像头的二次开发,实现了可视化定点追踪。 基本原理:服务器端采集RFID坐标信息,下发至客户端,海康威视接口调用摄像头,自动定位到坐标位置。 这里只提交了客户端代码,大家可以模拟服务器端数据进行测试。

    ​​​​​​https://github.com/xueyunlong123/HIKIVISION-TWO-development.git

    更多相关内容
  • 今天小编就为大家分享一篇python 读取摄像头数据并保存的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 自己写的一个Ubuntu下读取摄像头数据并发布Ros主题的C++程序,有比较详细的注释,分享给大家参考
  • 如何在python中读取摄像头数据,并显示呢?双码流一般高清摄像头产品编码器可同时产生两个不同的编码格式,统称主码流和子码流,双码流技术兼顾了高质量图像传输和窄带宽传输。主码流用于本地存储,子码流适用于图像在...

    如果做监控,经常会遇到读取摄像头的数据。如何在python中读取摄像头数据,并显示呢?

    双码流

    一般高清摄像头产品编码器可同时产生两个不同的编码格式,统称主码流和子码流,双码流技术兼顾了高质量图像传输和窄

    带宽传输。

    主码流用于本地存储,子码流适用于图像在低带宽网络上传输。

    双码流采用一路高码率的码流用于本地高清存储,例如QCIF/CIF/D1编码,一路低码率的码流用于网络传输,例如QCIF/CIF编

    码,同时兼顾本地存储和远程网络传输。双码流能实现本地传输和远程传输两种不同的带宽码流需要,本地传输采用高码

    流可以获得更高的高清录像存储,远程传输采用较低的码流以适应CDMA/ADSL等各种网络而获得更高的图像流畅度。

    SDK方式读取数据

    一般主流的厂商,会提供SDK来访问摄像头的数据,比如海康,大华。我们可以直接下载SDK,加载Dll去读取数据

    RSTP方式读取数据

    如果不想利用SDK来读取数据,我们可以通过RSTP协议来读取视频流数据。比如:

    海康:

    rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream

    说明:

    username: 用户名。例如admin。

    password: 密码。例如12345。

    ip: 为设备IP。例如 192.0.0.64。

    port: 端口号默认为554,若为默认可不填写。

    codec:有h264、MPEG-4、mpeg4这几种。

    channel: 通道号,起始为1。例如通道1,则为ch1。

    subtype: 码流类型,主码流为main,辅码流为sub。

    例如,请求海康摄像机通道1的主码流,Url如下

    主码流:

    rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream

    rtsp://admin:12345@192.0.0.64:554/MPEG-4/ch1/main/av_stream

    子码流:

    rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_stream

    rtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_stream

    大华:

    rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0

    说明:

    username: 用户名。例如admin。

    password: 密码。例如admin。

    ip: 为设备IP。例如 10.7.8.122。

    port: 端口号默认为554,若为默认可不填写。

    channel: 通道号,起始为1。例如通道2,则为channel=2。

    subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)

    例子

    [python]

    import wx

    import cv2

    class MainWindow(wx.Panel):

    def __init__(self, parent, capture):

    wx.Panel.__init__(self, parent)

    mainSizer = wx.BoxSizer(wx.VERTICAL)

    self.inputBox = wx.TextCtrl(self)

    mainSizer.Add(self.inputBox, 0, wx.ALL, 5)

    # video

    videoWarper = wx.StaticBox(self, label="Video", size=(640, 480))

    videoBoxSizer = wx.StaticBoxSizer(videoWarper, wx.VERTICAL)

    videoFrame = wx.Panel(self, -1, size=(640, 480))

    cap = ShowCapture(videoFrame, capture)

    videoBoxSizer.Add(videoFrame, 0)

    mainSizer.Add(videoBoxSizer, 0)

    parent.Centre()

    self.Show()

    self.SetSizerAndFit(mainSizer)

    class ShowCapture(wx.Panel):

    def __init__(self, parent, capture, fps=30):

    wx.Panel.__init__(self, parent, wx.ID_ANY, (0, 0), (640, 480))

    self.capture = capture

    ret, frame = self.capture.read()

    height, width = frame.shape[:2]

    parent.SetSize((width, height))

    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    self.bmp = wx.BitmapFromBuffer(width, height, frame)

    self.timer = wx.Timer(self)

    self.timer.Start(1000. / fps)

    self.Bind(wx.EVT_PAINT, self.OnPaint)

    self.Bind(wx.EVT_TIMER, self.NextFrame)

    def OnPaint(self, evt):

    dc = wx.BufferedPaintDC(self)

    dc.DrawBitmap(self.bmp, 0, 0)

    def NextFrame(self, event):

    ret, frame = self.capture.read()

    if ret:

    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    self.bmp.CopyFromBuffer(frame)

    self.Refresh()

    rstp = ‘rtsp://admin:admin2018@192.168.1.180:554/MPEG-4/ch1/main/av_stream’

    capture = cv2.VideoCapture(rstp)

    # capture = cv2.open(rstp)

    app = wx.App(False)

    frame = wx.Frame(None, -1, ‘HGA Count’, size=(400, 400))

    panel = MainWindow(frame, capture)

    frame.Show()

    app.MainLoop()

    [/python]

    fea82cf0fdf0610b555732b2ca5eb80a.png

    展开全文
  • 使用原始的RGB数据构造Opencv中的Mat对象。该资源使用Linux系统中的V4L2接口读取摄像头MJPEG图像数据,解码成RGB数据,再转换为Opencv中的Mat对象所使用的BGR格式
  • ROS学习——读取摄像头数据image

    千次阅读 2020-07-09 10:38:59
    } 需要注意的一点是,在读取摄像头数据的时候用到了OpenCV,所以在CMakeLists.txt文件find_package中加入OpenCV。 重新打开终端,输入rviz,运行rviz,然后修改image Topic为/sensor_msgs/image_gray,在rviz左下角...

    在ROS工作空间的src文件夹下创建read_camera功能包,并在包内创建include、launch、src、cfg四个文件夹。
    在cfg文件夹中创建param.yaml文件,并写入以下内容:

    image_dev: /dev/video0
    save_path: /home/huanyu/datasets/camera
    
    save: false
    visualization: true
    

    在include文件夹中创建camera_manager.h文件,并写入以下内容:

    #include<opencv2/opencv.hpp>
    #include<opencv2/highgui/highgui.hpp>
    #include<cv_bridge/cv_bridge.h> 
    #include <image_transport/image_transport.h>
    #include<ros/ros.h>
    #include<string>
    #include<iostream>
    #include<sensor_msgs/Image.h>
    #include<sensor_msgs/image_encodings.h>
    #include<std_msgs/Header.h>
    #include<sys/stat.h>
    class CameraManager
    {
    public:
        CameraManager(ros::NodeHandle nh,std::string name,int hz,std::string path="./");
        cv::Mat* read_image(bool save);
     const cv::Mat& getRGB() const{return RGB_;}
        const cv::Mat& getGRY() const{return GRAY_;}
        const double get_delay() const{return delay_;}
    bool save_image(std::string name,cv::Mat& image)
        {
             //std::cout << path_+name << std::endl;
             return cv::imwrite(path_+name,image);
        }
      void spin(bool ros_send = true ,bool save = false,bool visualization = false);
    private:
     image_transport::ImageTransport nh_;
        image_transport::Publisher image_pub;
       //for visualization
        cv::Mat GRAY_;
        cv::Mat RGB_;
       cv::VideoCapture capture_;
       int size_[3];
       int hz_;
        double delay_;
        std::string device_name_;
        std::string path_;
    };
    在src文件夹中创建camera_manager.cpp文件,并写入以下内容:
    #include"camera_manager.h"
    using namespace std;
    CameraManager::CameraManager(ros::NodeHandle nh,std::string name,int hz,std::string path):
    nh_(nh),device_name_(name),hz_(hz),path_(path)
    {
        delay_ = 1000.0/hz_;
       cout<<"delay: "<<delay_<<endl;
       capture_ = cv::VideoCapture(0);
        
        if(!capture_.isOpened())
            return;
     cv::Mat frame;
        capture_ >> frame;
        size_[0] = frame.size[0];
        size_[1] = frame.size[1];
        size_[2] = frame.size[2];
        image_pub = nh_.advertise("/sensor_msgs/image_gray",5);
    }
    cv::Mat* CameraManager::read_image(bool save)
    {
        cv::Mat frame,gray;
        capture_ >> frame;
        ros::Time timestamp = ros::Time::now();
        std::string time_second = std::to_string(timestamp.toSec()*1e9);
        std::string image_name(time_second);
        image_name.erase(19);
        image_name.append(".png");
        if(frame.empty())
        {
            //std::cout << "frequency is too high"<<std::endl;
            return nullptr;
        }
        cv::cvtColor(frame, gray, CV_BGR2GRAY);
        RGB_ = frame;
        GRAY_ = gray;
        if(save)
        {
            save_image(image_name, gray);
        }
        return &RGB_;
    }
    void CameraManager::spin(bool ros_send ,bool save,bool visualization)
    {    
        sensor_msgs::ImagePtr msg;
        while(ros::ok())
        {
            cv::Mat* imagePtr = read_image(save);
            if(visualization) imshow("image_gray",*imagePtr);
            if(imagePtr&&ros_send)
            {
                msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", *imagePtr).toImageMsg();
                image_pub.publish(msg);
            }
            cv::waitKey(delay_);
        }
    }
    

    在launch文件夹中创建read_image.launch文件,并写入以下内容:

    <launch>
        <node pkg = "read_camera" type="read_image" name="read_image" output="screen">
            <rosparam file="$(find read_camera)/cfg/param.yaml" command="load"/>
        </node>
    
        <node pkg="rviz" type="rviz" name="rviz"/>
    </launch>
    

    下面还提供了保存照片的函数,需要的人自行编译save_image.cpp

    #include<ros/ros.h>
    #include<sensor_msgs/CameraInfo.h>
    #include<opencv2/opencv.hpp>
    #include"camera_manager.h"
    using namespace cv;
    int main(int argc,char** argv)
    {
        ros::init(argc,argv,"save_images");
        ros::NodeHandle nh;
        std::string device_name,save_path;
        bool save,visualization;
        ros::param::get("~/image_dev",device_name);
        ros::param::get("~/save_path",save_path);
        ros::param::get("~/visualization",visualization);
        CameraManager cm(nh,device_name,20,save_path);
        cm.spin(true,visualization,save);
    }
    

    需要注意的一点是,在读取摄像头数据的时候用到了OpenCV,所以在CMakeLists.txt文件find_package中加入OpenCV。
    重新打开终端,输入rviz,运行rviz,然后修改image Topic为/sensor_msgs/image_gray,在rviz左下角就会显示摄像头的图像了。

    展开全文
  • opencv2 python 读取摄像头数据

    千次阅读 2019-01-21 16:35:47
    opencv2 python 读取摄像头数据 ''' Get video from camera ''' import cv2 cap = cv2.VideoCapture(0) #视频进行读取操作以及调用摄像头 width = 640 ret = cap.set(3, width) height = 480 ret = cap.set(4, ...

    opencv2 python 读取摄像头数据

    '''
     Get video from camera
    '''
    import cv2
     
    cap = cv2.VideoCapture(0) #视频进行读取操作以及调用摄像头
    width = 640
    ret = cap.set(3, width)
    height = 480
    ret = cap.set(4, height)
     
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
     
    out = cv2.VideoWriter('out.avi', fourcc, 20.0, (width, height))
     
    while cap.isOpened(): #判断视频读取或者摄像头调用是否成功,成功则返回true。
        ret, frame = cap.read()
        if ret is True:
            print('frame shape:',frame.shape)
            frame = cv2.resize(frame, (640, 480))
            out.write(frame)
     
            cv2.imshow('frame', frame)
     
        else:
            break
     
        key = cv2.waitKey(1)
        if key == ord('q'):
            break
     
    cap.release()
    out.release()
    cv2.destroyAllWindows()
    
    展开全文
  • 基于粒子群算法的目标跟踪测试视频文件和通过usb读取摄像头数据进行跟踪测试,matlab2021a测试
  • CMakeLists.txt: cmake_minimum_required(VERSION 3.16) project(opencvTest) set(CMAKE_CXX_STANDARD 14) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(opencvTest...
  • 这里是利用FFmpeg获取网络摄像头数据,然后解码播放。 开发环境:win7+opencv3.0+ffmpeg+VS2013
  • python 读取摄像头数据并保存

    千次阅读 2017-06-24 10:27:41
    python 读取摄像头数据并保存
  • 4.3读取摄像头并显示

    2017-03-29 16:36:26
    Java Opencv系列:(配套代码下载)4.3读取摄像头并显示
  • 主要为大家详细介绍了Opencv实现读取摄像头和视频数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 本人测试环境:ubuntu18.04 方法1:使用usb_cam驱动读取 1.1 安装编译usb_cam驱动在终端运行以下命令:cd ~/catkin_ws/src git clone https://github.com/bosch-ros-pkg/usb_cam.git cd .. catkin_make
  • FFmpeg —— RTMP推流到流媒体服务器(编码的方式)—— 读取摄像头数据并推流 只需要将推流地址改为本地文件名的形式即可。 #include <stdio.h> #define __STDC_CONSTANT_MACROS extern "C" { #include ...
  • C++OpenCV读取视频数据和摄像头数据

    千次阅读 2022-04-25 21:30:01
    1.读取视频数据 #include<iostream> #include<opencv2/highgui.hpp> #include<opencv2/imgcodecs.hpp> #include<opencv2/opencv.hpp> using namespace cv; using namespace std; /* ...
  • 使用v4l2在qt实时显示摄像头数据。未使用opencv。uvc摄像头都可使用。 这样的代码不应该需要太多积分,但时间久了积分上去了,特意来减少所需积分,希望大家喜欢。
  • ffmpeg读取摄像头数据只需要把avformat_open_input的第二个参数设置为摄像头设备的名字即可,开发环境是Qt,在debug模式下,以切正常,但是发布release的时候,执行完av_read_frame还是能看到packet数据的,但是执行...
  • Simulink有时需处理来自外部摄像头设备的图像,该文档将实现该功能
  • ubuntu-linux环境下,运行代码,系统读取USB摄像头数据,并实时显示摄像头采集的视频信息
  • OpenCV 以MJPEG的格式 读取摄像头数据

    千次阅读 2018-12-09 21:47:46
    OpenCV 以MJPEG的格式 读取摄像头数据   可以使用opencv读取。 源代码: #include"highgui.h" #include"cv.h" //从摄像头中读入数据 int main(int argc,char** argv) { cvNamedWindow(&...
  • FPGA读取OV5640摄像头数据并通过VGA或LCD屏显示输出的Verilog逻辑源码Quartus工程文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 module top( input clk, input rst_n, output cmos_...
  • 用opencv调取摄像头选择文件保存路径、可选择是否选取区域录制功能、调取ffmpeg命令行压缩录制视频
  • 最近接触到多线程读取摄像头数据的问题,需求是读取同步,期望通过回调的方式实现,找到两个最为接近的教程: 1.多线程读取IP摄像头(Python版) 2.Python 获取多线程返回值的两种方式
  • Opencv读取摄像头数据

    2015-06-16 21:21:19
    //#include #include #include #include #include int main( int argc, char** argv ) { //声明IplImage指针 IplImage* pFrame = ...//获取摄像头 CvCapture* pCapture = cvCreateCameraCaptur

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,175
精华内容 12,870
关键字:

怎么读取摄像头的数据