中转
/*********************************************************************\
*
* (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------------------------------*/