﻿

{"id":15798,"date":"2023-10-07T16:00:36","date_gmt":"2023-10-07T07:00:36","guid":{"rendered":"https:\/\/www.bitstrong.com\/jp\/?p=15798"},"modified":"2024-01-12T10:02:37","modified_gmt":"2024-01-12T01:02:37","slug":"fisheye-enabling-fisheye-dewarping-and-eptz-control","status":"publish","type":"post","link":"https:\/\/www.bitstrong.com\/jp\/fisheye-enabling-fisheye-dewarping-and-eptz-control\/","title":{"rendered":"\u3010Fisheye\u3011Enabling Fisheye Dewarping And EPTZ Control"},"content":{"rendered":"<p><strong><span style=\"font-size: 18pt;\">\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b0\u30e9\u30e0<\/span><\/strong><\/p>\n<div>\/\/<\/div>\n<div>\/\/ Device Network SDK (Fisheye)<\/div>\n<div>\/\/<\/div>\n<div>\/\/ Enable Fisheye Expansion and E-PTZ Control<\/div>\n<div>\/\/ Sample Code for Enabling Fisheye Dewarping and E-PTZ Control via Player SDK<\/div>\n<div>\/\/<\/div>\n<div>#include &lt;stdio.h&gt;<\/div>\n<div>#include &lt;iostream&gt;<\/div>\n<div>#include &#8220;stdafx.h&#8221;<\/div>\n<div>#include &#8220;SynPlayMode.h&#8221;<\/div>\n<div>#include &#8220;SynPlayModeDlg.h&#8221;<\/div>\n<div>#include &#8220;PlayM4.h<\/div>\n<p>#include &#8220;Windows.h&#8221;<\/p>\n<div>void FisheyePlay()<\/div>\n<div>{<\/div>\n<div>BOOL bRet = FALSE;<\/div>\n<div>FISHEYEPARAM stFEPara1 = {0};<\/div>\n<div>FISHEYEPARAM stFEPara2 = {0};<\/div>\n<p>FISHEYEPARAM stFEPara3 = {0};<\/p>\n<div>\u00a0 \u00a0 \/\/Get the player SDK port<\/div>\n<div>PlayM4_GetPort(&amp;m_lPort);<\/div>\n<div>if (-1 == m_lPort)<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0str.Format(&#8220;PlayM4_GetPort fail\\n&#8221;);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0return;<\/div>\n<p>}<\/p>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/Open the video file to play<\/div>\n<div>if (FALSE == PlayM4_OpenFile(m_lPort,m_strFileName.GetBuffer(m_strFileName.GetLength())))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0str.Format(&#8220;PlayM4_OpenFile fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0goto EXIT1;<\/div>\n<p>}<\/p>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/Play the video file<\/div>\n<div>if (FALSE == PlayM4_Play(m_lPort,GetDlgItem(IDC_FISHEYE_MAIN_WND)-&gt;GetSafeHwnd()))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0str.Format(&#8220;PlayM4_Play fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0goto EXIT2;<\/div>\n<p>}<\/p>\n<div>\/\/Enable the fisheye dewarping<\/div>\n<div>if (FALSE == PlayM4_FEC_Enable(m_lPort))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0str.Format(&#8220;PlayM4_FEC_Enable fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0goto EXIT2;<\/div>\n<p>}<\/p>\n<div>\/\/Sub port 1 , ceiling mounting, PTZ mode, get the sub port for fisheye dewarping<\/div>\n<div>if (FALSE == PlayM4_FEC_GetPort(m_lPort,&amp;m_nSubPort1,FEC_PLACE_CEILING,FEC_CORRECT_PTZ))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_GetPort1 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\/\/Update the position and the zooming value<\/div>\n<div>stFEPara1.nUpDateType = FEC_UPDATE_PTZPARAM | FEC_UPDATE_PTZZOOM; \/\/Updated type<\/div>\n<div>stFEPara1.stPTZParam.fPTZPositionX = 0.2; \/\/The central coordinates of PTZ view<\/div>\n<div>stFEPara1.stPTZParam.fPTZPositionY = 0.3;<\/div>\n<div>stFEPara1.fZoom = 0.1;\u00a0 \/\/The range parameter of PTZ view<\/div>\n<p>\/\/ stCycleParam is available to all ssub ports of fisheye dewarping.<\/p>\n<div>\u00a0 \u00a0 \/\/Set fisheye dewarping parameters<\/div>\n<div>if (FALSE == PlayM4_FEC_SetParam(m_lPort,m_nSubPort1,&amp;stFEPara1))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_SetParam1 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\/\/Sub port 2 , ceiling mounting, PTZ mode, get the sub port for fisheye dewarping<\/div>\n<div>if (FALSE == PlayM4_FEC_GetPort(m_lPort,&amp;m_nSubPort2,FEC_PLACE_CEILING,FEC_CORRECT_PTZ))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_GetPort2 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\/\/Update the position<\/div>\n<div>stFEPara2.nUpDateType = FEC_UPDATE_PTZPARAM;<\/div>\n<div>stFEPara2.stPTZParam.fPTZPositionX = 0.7; \/\/(0,1)<\/div>\n<p>stFEPara2.stPTZParam.fPTZPositionY = 0.8; \/\/(0,1)<\/p>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \/\/Set fisheye dewarping parameters<\/div>\n<div>if (FALSE == PlayM4_FEC_SetParam(m_lPort,m_nSubPort2,&amp;stFEPara2))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_SetParam2 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\/\/Zoom in\/out<\/div>\n<div>stFEPara3.nUpDateType = FEC_UPDATE_PTZZOOM;<\/div>\n<p>stFEPara3.fZoom = 0.9; \/\/(0,1)<\/p>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \/\/Set fisheye dewarping parameters<\/div>\n<div>if (FALSE == PlayM4_FEC_SetParam(m_lPort,m_nSubPort2,&amp;stFEPara3))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_SetParam3 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\/\/Sub port 3 , ceiling mounting, PTZ mode, get the sub port for fisheye dewarping<\/div>\n<div>if (FALSE == PlayM4_FEC_GetPort(m_lPort,&amp;m_nSubPort3,FEC_PLACE_CEILING,FEC_CORRECT_PTZ))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_GetPort2 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \/\/Set fisheye dewarping parameters<\/div>\n<div>stFEPara3.nUpDateType = FEC_UPDATE_PTZPARAM;<\/div>\n<div>stFEPara3.stPTZParam.fPTZPositionX = 0.7; \/\/(0,1)<\/div>\n<div>stFEPara3.stPTZParam.fPTZPositionY = 0.8; \/\/(0,1)<\/div>\n<p>stFEPara3.fZoom = 0.9; \/\/(0,1)<\/p>\n<div>if (FALSE == PlayM4_FEC_SetParam(m_lPort,m_nSubPort2,&amp;stFEPara3))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_SetParam3 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\/\/Set fisheye dewarping parameters<\/div>\n<div>stFEPara3.nUpDateType = FEC_UPDATE_PTZZOOM;<\/div>\n<div>if (FALSE == PlayM4_FEC_SetParam(m_lPort,m_nSubPort2,&amp;stFEPara3))<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CString str;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 str.Format(&#8220;PlayM4_FEC_SetParam3 fail[0x%x]\\n&#8221;,PlayM4_GetLastError(m_lPort));<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MessageBox(str);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 goto EXIT3;<\/div>\n<p>}<\/p>\n<div>\u00a0 \u00a0 \/\/Set the display window<\/div>\n<div>PlayM4_FEC_SetWnd(m_lPort,m_nSubPort1,GetDlgItem(IDC_FISHEYE_SUB_WND1)-&gt;GetSafeHwnd());<\/div>\n<div>PlayM4_FEC_SetWnd(m_lPort,m_nSubPort2,GetDlgItem(IDC_FISHEYE_SUB_WND2)-&gt;GetSafeHwnd());<\/div>\n<div>PlayM4_FEC_SetWnd(m_lPort,m_nSubPort3,GetDlgItem(IDC_FISHEYE_SUB_WND3)-&gt;GetSafeHwnd());<\/div>\n<p>return;<\/p>\n<div>EXIT3:<\/div>\n<div>\u00a0 \u00a0 \/\/Delete the sub port of fisheye dewarping<\/div>\n<div>if (-1 != m_nSubPort1)<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 PlayM4_FEC_DelPort(m_lPort,m_nSubPort1);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 m_nSubPort1 = -1;<\/div>\n<p>}<\/p>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \/\/Delete the sub port of fisheye dewarping<\/div>\n<div>if (-1 != m_nSubPort2)<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0PlayM4_FEC_DelPort(m_lPort,m_nSubPort2);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0m_nSubPort2 = -1;<\/div>\n<p>}<\/p>\n<div>\u00a0 \u00a0 \/\/Delete the sub port of fisheye dewarping<\/div>\n<div>if (-1 != m_nSubPort3)<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0PlayM4_FEC_DelPort(m_lPort,m_nSubPort3);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0m_nSubPort3 = -1;<\/div>\n<p>}<\/p>\n<div>\u00a0 \u00a0 \/\/Disable fisheye dewarping<\/div>\n<p>PlayM4_FEC_Disable(m_lPort);<\/p>\n<div>EXIT2:<\/div>\n<div>PlayM4_CloseFile(m_lPort);<\/div>\n<div>EXIT1:<\/div>\n<div>if (-1 != m_lPort)<\/div>\n<div>{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0PlayM4_FreePort(m_lPort);<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0m_lPort = -1;<\/div>\n<div>}<\/div>\n<div>}<\/div>\n","protected":false},"excerpt":{"rendered":"\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b0\u30e9\u30e0 \/\/ \/\/ Device Network SDK (Fisheye) \/\/ \/\/ Enable Fisheye Expansion and E-PTZ Control \/\/ Sample Code for Enabling Fisheye Dewarping and E-PTZ Cont...","protected":false},"author":2,"featured_media":15936,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"categories":[107],"tags":[],"class_list":["post-15798","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-camera-connection"],"_links":{"self":[{"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/posts\/15798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/comments?post=15798"}],"version-history":[{"count":5,"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/posts\/15798\/revisions"}],"predecessor-version":[{"id":16289,"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/posts\/15798\/revisions\/16289"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/media\/15936"}],"wp:attachment":[{"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/media?parent=15798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/categories?post=15798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bitstrong.com\/jp\/wp-json\/wp\/v2\/tags?post=15798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}