中转

2020-08-27  本文已影响0人  a81eefb19dfe

/*********************************************************************\

*

*                  (c) lkc

*                  All Rights Reserved. lkc Confidential

*

\*********************************************************************/

/*********************************************************************\

*  Title                      :

*

*  Module Description        :

*

*  Author                    : lkc

*

*  Created                    : 2020-8-17

*

\*********************************************************************/

#include "CamControl.h"

#include <math.h>

#define PI acos(-1)

CamControl camCtrlInstance;

//RTSP地址:主码流 rtsp://admin:123456@192.168.0.219:554/mpeg4 子码流 rtsp://admin:123456@192.168.0.123:554/mpeg4cif

//const cv::String adressStr = "rtsp://admin:123456@192.168.5.42:554/mpeg4";

const cv::String adressStr = "rtsp://admin:123456@192.168.5.42:554/mpeg4cif";

bool CamControl::Init()

{

    if (!m_capture.open(adressStr))//派高相机

    {

        printf("m_capture.open fail\n");

        return false;

    }

    printf("m_capture.open success\n");

    m_capture.set(cv::CAP_PROP_FPS, 20.0);//设置帧率 帧/秒

    m_dataRate = m_capture.get(cv::CAP_PROP_FPS);

    m_frameWidth = m_capture.get(cv::CAP_PROP_FRAME_WIDTH);

    m_frameHeight = m_capture.get(cv::CAP_PROP_FRAME_HEIGHT);

    printf("m_dataRate is %.1f\n",m_dataRate);

    printf("m_frameWidth is %d\n",m_frameWidth);

    printf("m_frameHeight is %d\n",m_frameHeight);

//    m_ROIWidth = m_frameWidth;

//    m_ROIHeight = m_frameHeight;

    m_ROIWidth = 640;

    m_ROIHeight = 360;

    m_horizontalViewMax = 2*atan2(PIXEL_SIZE*m_frameWidth/2/1000,FOCUS)*180/PI;

    m_verticalViewMax = 2*atan2(PIXEL_SIZE*m_frameHeight/2/1000,FOCUS)*180/PI;

    printf("m_horizontalViewMax is %.1f\n",m_horizontalViewMax);

    printf("m_verticalViewMax is %.1f\n",m_verticalViewMax);

    return true;

}

bool CamControl::Read(cv::Mat& frame)

{

    cv::Mat imageOrigin;

    if(!m_capture.read(imageOrigin))

    {

        return false;

    }

    m_frameWidth = imageOrigin.cols;

    m_frameHeight = imageOrigin.rows;

    printf("m_frameWidth is %d\n",m_frameWidth);

    printf("m_frameHeight is %d\n",m_frameHeight);

    m_horizontalViewMax = 2*atan2(PIXEL_SIZE*m_frameWidth/2/1000,FOCUS)*180/PI;

    m_verticalViewMax = 2*atan2(PIXEL_SIZE*m_frameHeight/2/1000,FOCUS)*180/PI;

    frame = imageOrigin(cv::Rect(m_frameWidth/2-m_ROIWidth/2,m_frameHeight/2-m_ROIHeight/2,m_ROIWidth,m_ROIHeight));

    return true;

}

void CamControl::SetView(float horizontalViewValue,float verticalViewValue)

{

    //    int widthROI = pixelWidthOrigin*2*FOCUS*tan(m_horizontalView/2*PI/180)/SENSOR_WIDTH;

    //    int heightROI = pixelHeightOrigin*2*FOCUS*tan(m_verticalView/2*PI/180)/SENSOR_HEIGHT;

    m_ROIWidth = 2*FOCUS*tan(horizontalViewValue/2*PI/180)/PIXEL_SIZE*1000;

    m_ROIHeight = 2*FOCUS*tan(verticalViewValue/2*PI/180)/PIXEL_SIZE*1000;

    printf("horizontalViewValue is %.1f\n",horizontalViewValue);

    printf("verticalViewValue is %.1f\n",verticalViewValue);

    printf("now m_ROIWidth is %d\n",m_ROIWidth);

    printf("now m_ROIHeight is %d\n",m_ROIHeight);

    if(m_ROIWidth>m_frameWidth)

    {

        m_ROIWidth = m_frameWidth;

    }

    if(m_ROIWidth<ROI_WIDTH_MIN)

    {

        m_ROIWidth = ROI_WIDTH_MIN;

    }

    if(m_ROIHeight>m_frameHeight)

    {

        m_ROIHeight = m_frameHeight;

    }

    if(m_ROIHeight<ROI_HEIGHT_MIN)

    {

        m_ROIHeight = ROI_HEIGHT_MIN;

    }

}

/********************************************************************\

*

* REVISION RECORDS

*

\*********************************************************************/

/*********************************************************************/

/*

*

*

*

\*********************************************************************/

/*------------------------------The End------------------------------*/

上一篇 下一篇

猜你喜欢

热点阅读