• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 46  文章 - 39  trackbacks - 0
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            5.3    移動操作

                本節介紹三種移動PTZ單元操作,絕對、相對或移動。所有操作都需要profile token,引用PTZ配置中的Media Profile。

                所有移動命令應以非阻塞方式執行,表示不應等到請求的移動操作完成。新的移動請求可以覆蓋最后的移動操作。

                由于本規范涉及的物理設備范圍廣泛,因此本規范不要求對PTZ移動操作的特定相應時間。但是設備應盡量減少PTZ移動命令響應的延遲。設備沒有完全控制PTZ控制輸入和設備移動的滯后。網絡與客戶端的延遲會增加滯后。實現應該盡快減少設備的延遲。

            5.3.1.    絕對移動(AbsoluteMove)
                如果PTZ節點支持絕對水平/俯仰或絕對變焦的移動,則應支持絕對移動操作。這個命令的位置參數指定PTZ單元要移動的絕對位置。它分為一個可選的水平/俯仰元素和一個可選的變焦元素。如果忽略了水平/俯仰位置,則當前的水平/俯仰運動不受此命令的影響。變焦也是同樣的原理。

                PTZ節點支持的絕對位置空間,如果省略了空間信息,則PTZ配置的相應的默認空間,采用指定控件的媒體屬性。設備僅為有絕對位置空間提供支持絕對水平/俯仰或變焦的服務。現有的移動操作命令中的速度參數比PTZ配置中的默認速度優先級要高。如果空間引用了速度參數,那么需要支持PTZ節點支持的速度空間。

                如果無法達到所要求的絕對位置,操作將失敗。

            請求(REQUEST):
            • ProfileToken [tt:ReferenceToken]
            對現有媒體配置文件的引用
            • Position [tt:PTZVector]
            指定絕對目標位置的矢量
            • Speed – 可選[tt:PTZSpeed]
            可選速度矢量
            響應(RESPONSE): 空消息
            錯誤(FAULTS)
            • env:Sender - ter:InvalidArgVal - ter:NoProfile
            請求的配置文件token內ProfileToken不存在。
            • env:Sender - ter:InvalidArgVal - ter:NoPTZProfile
            請求的配置文件token未引用PTZ配置。
            • env:Sender - ter:InvalidArgVal - ter:SpaceNotSupported
            引用了PTZ節點不支持的空間。
            • env:Sender - ter:InvalidArgVal - ter:InvalidPosition
            請求的位置超出了界限。
            • env:Sender - ter:InvalidArgVal - ter:InvalidSpeed
            請求的速度超出了界限。
            訪問權限類(ACCESS CLASS)
            ACTUATE

            5.3.2.    相對移動(RelativeMove)

                如果PTZ節點支持相對水平/俯仰或相對變焦移動,則需要支持相對移動(RelativeMove)操作。此操作的轉換參數指定當前位置與要移動的位置的插值。該操作可分為一個可選的水平/俯仰元素和一個可選的變焦參數。如果水平/俯仰忽略掉了,那么當前的水平/俯仰位置不會受此命令的影響。變焦元素也同樣。
                轉換元素中引用的空間應該為PTZ節點支持的轉換空間。如果轉換參數的空間信息忽略掉了,那么將根據PTZ配置的默認空間。設備需要支持相對水平/俯仰移動,相對變焦移動或不支持相對運動。
                在請求移動的命令中攜帶的速度參數優先于PTZ配置中的默認速度。如果空間引用了速度參數,則PTZ節點需要支持速度空間。
                通過發送水平/俯仰和變焦0值命令可以在當前位置停止PTZ單元。停止應具有與引用相對空間完全相同的效果。
                如果請求轉換后的絕對位置是無法到達的,那么PTZ節點需要移動最接近的有效位置。
            請求(REQUEST):
            • ProfileToken [tt:ReferenceToken]
            對現有媒體配置文件的引用
            • Translation [tt:PTZVector]
            指定相對于當前位置的位置平移的向量
            • Speed – 可選[tt:PTZSpeed]
            可選速度矢量
            響應(RESPONSE): 空消息
            錯誤(FAULTS)
            • env:Sender - ter:InvalidArgVal - ter:NoProfile
            請求的配置文件token內ProfileToken不存在。
            • env:Sender - ter:InvalidArgVal - ter:NoPTZProfile
            請求的配置文件token未引用PTZ配置。
            • env:Sender - ter:InvalidArgVal - ter:SpaceNotSupported
            引用了PTZ節點不支持的空間。
            • env:Sender - ter:InvalidArgVal - ter:InvalidTranslation
            請求的轉換超出了界限。
            • env:Sender - ter:InvalidArgVal - ter:InvalidSpeed
            請求的速度超出了界限。
            訪問權限類(ACCESS CLASS)
            ACTUATE

            5.3.3.    連續移動(ContinuousMove)

                具有PTZ功能的設備應支持連續移動。此命令的速度參數為水平/俯仰和縮放指定的有符號的速度值。組合的水平/俯仰元素及變焦元素也是可選的。如果水平/俯仰元素忽略掉了,當前的水平/俯仰元素則不受此命令的影響。變焦元素也是如此。引用有速度元素的空間的PTZ節點需要支持速度空間。如果速度參數忽略掉了空間信息,那么采用相應的指定媒體文件的PTZ配置的默認空間。設備通過僅為支持的情況提供速度空間來支持連續水平/俯仰移動和連續變焦動作。
                當前移動操作的超時參數優先于相應PTZ配置的默認超時參數。超時參數決定PTZ節點的連續移動的時間。
                當0作為該軸的連續移動參數時,設備應停止在特定軸(水平,俯仰或變焦)的移動。引用的速度空間也應有獨立的停止功能。這個命令在連續移動的影響與在5.3.5節中的停止命令是一樣的。
                請求的速度得到的絕對位置是不能到達的,則PTZ節點應移動到最接近的能到達的位置。連續移動操作的典型應用是通過操縱桿控制PTZ。
            請求(REQUEST):
            • ProfileToken [tt:ReferenceToken]
            對現有媒體配置文件的引用
            • Velocity [tt:PTZSpeed]
            速度矢量指定水平,俯仰和變焦的速度。
            • Timeout– 可選[tt:duration]
            可選超時
            響應(RESPONSE): 空消息
            錯誤(FAULTS)
            • env:Sender - ter:InvalidArgVal - ter:NoProfile
            請求的配置文件token內ProfileToken不存在。
            • env:Sender - ter:InvalidArgVal - ter:NoPTZProfile
            請求的配置文件token未引用PTZ配置。
            • env:Sender - ter:InvalidArgVal - ter:SpaceNotSupported
            引用了PTZ節點不支持的空間。
            • env:Sender - ter:InvalidArgVal - ter:InvalidTranslation
            請求的轉換超出了界限。
            • env:Sender - ter:InvalidArgVal - ter:TimeoutNotSupported
            指定的超時參數不在支持的超時時間范圍內。
            • env:Sender - ter:InvalidArgVal - ter:InvalidSpeed
            請求的速度超出了界限。
            訪問權限類(ACCESS CLASS)
            ACTUATE

            5.3.4.    地理移動(GeoMove)

                設備有GeoMove信號,則PTZ節點需要支持這類命令。
                可選的AreaHeight和AreaWidth參數可以添加到參數中,所以PTZ設備可以決定變焦因子。如果沒有提供AreaHeight和AreaWidth,該單元將不會更改變焦。AreaHeight和AreaWidth用米來表示。
                請求的轉換過程中的速度參數優先于相應的PTZ配置的默認速度。如果引用的空間含有速度參數,那么PTZ節點應支持速度空間。
                如果PTZ設備不支持自動檢索地理位置,那么在執行地理引用命令之前使用SetGeoLocation進行設置??蛻舳巳绻谠O備設置地理位置之前發送GeoMove命令,設備應返回一個錯誤。
                取決于PTZ設備的運動方式,請求的位置可能無法到達。這種情況下設備應返回一個錯誤,表示由于物理限制無法執行請求的操作。
            請求(REQUEST):
            • ProfileToken [tt:ReferenceToken]
            對現有媒體配置文件的引用
            • Target [tt:GeoLocation]
            目標坐標。
            • Speed – 可選[tt:PTZSpeed]
            指定水平,俯仰和變焦的速度矢量。
            • AreaWidth – 可選[xs:float]
            要顯示的可選區域。
            • AreaHeight – 可選[xs:float]
            要顯示的可選區域。

            響應(RESPONSE): 空消息
            錯誤(FAULTS)
            • env:Sender - ter:InvalidArgVal - ter:NoProfile
            請求的配置文件token內ProfileToken不存在。
            • env:Sender - ter:InvalidArgVal - ter:NoPTZProfile
            請求的配置文件token未引用PTZ配置。
            • env:Sender - ter:InvalidArgVal - ter:GeoMoveNotSupported
            設備不支持地理移動。
            • env:Sender - ter:InvalidArgVal - ter:UnreachablePosition
            請求的轉換超出了界限。
            • env:Sender - ter:InvalidArgVal - ter:TimeoutNotSupported
            指定的超時參數不在支持的超時時間范圍內。
            • env:Sender - ter:InvalidArgVal - ter:GeoLocationUnknown
            由于地理位置未配置或不可用,該單元無法執行GeoMove。
            訪問權限類(ACCESS CLASS)
            ACTUATE

            5.3.5.    停止(Stop)

                PTZ設備需支持停止操作。如果沒有指定停止的參數,那么這個命令將停止所有正在進行的水平,俯仰和變焦動作。通過指定相應的停止參數可以停止對應的操作。
            請求(REQUEST):
            • ProfileToken [tt:ReferenceToken]
            對現有媒體配置文件的引用
            • PanTilt – 可選[xs:boolean]
            停止水平和俯仰操作(默認為true)。
            • Zoom – 可選[xs:boolean]
            停止變焦操作(默認為true)。
            響應(RESPONSE): 空消息
            錯誤(FAULTS)
            • env:Sender - ter:InvalidArgVal - ter:NoProfile
            請求的配置文件token內ProfileToken不存在。
            • env:Sender - ter:InvalidArgVal - ter:NoPTZProfile
            請求的配置文件token未引用PTZ配置。
            訪問權限類(ACCESS CLASS)
            ACTUATE

            5.3.6.    移動并開始跟蹤(MoveAndStartTracking)

                設備PTZ節點有MoveAndTrack時應該支持這個命令。這個操作的目的是向設備發送一個自動命令:移動攝像機到想要的位置然后通過追蹤算法代理PTZ操作。使用原子命令,延遲被最小化。移動位置是可選的且可以按照三種模式進行設置:
            • 通過地理位置坐標
            • 通過預置位token
            • 通過PTZVector位置
                請求位置移動的的速度參數優先于相應的PTZ配置的默認速度。如果引用空間含有速度參數,那么PTZ節點需支持速度空間。
                如果在同一個設備中完成了偵察和追蹤,那么ObjectID引用可以作為參數,以指定應跟蹤哪個對象。
                請求的絕對位置設備無法到達,則操作將失敗。
            請求(REQUEST):
            • ProfileToken [tt:ReferenceToken]
            對現有媒體配置文件的引用
            • GeoLocation  – 可選 [tt:GeoLocation]
            可選目標坐標。
            • PresetToken – 可選[tt:ReferenceToken]
            對一個存在的預置位token的可選應用。
            • TargetPosition – 可選[tt:PTZVector]
            指定絕對目標位置的可選向量。
            • Speed – 可選[tt:PTZSpeed]
            可選速度矢量。
            • ObjectID – 可選[tt:ObjectID]
            要跟蹤對象的可選Object ID。
            響應(RESPONSE): 空消息
            錯誤(FAULTS)
            • env:Sender - ter:InvalidArgVal - ter:NoProfile
            請求的配置文件token內ProfileToken不存在。
            • env:Sender - ter:InvalidArgVal - ter:NoPTZProfile
            請求的配置文件token未引用PTZ配置。
            • env:Sender - ter:InvalidArgVal - ter:SpaceNotSupported
            引用了PTZ節點不支持的空間。
            • env:Sender - ter:InvalidArgVal - ter:InvalidPosition
            請求的位置超出了界限。
            • env:Sender - ter:InvalidArgVal - ter:InvalidSpeed
            請求的速度超出了界限。
            • env:Sender - ter:InvalidArgVal - ter:GeoMoveNotSupported
            設備不支持地理移動。
            • env:Sender - ter:InvalidArgVal - ter:UnreachablePosition
            請求的轉換超出了界限。
            • env:Sender - ter:InvalidArgVal - ter:GeoLocationUnknown
            由于地理位置未配置或不可用,該單元無法執行GeoMove。
            • env:Sender - ter:InvalidArgVal - ter:NoToken
            請求的預置位token不存在。
            訪問權限類(ACCESS CLASS)
            ACTUATE

            5.3.7.    狀態獲取(GetStatus)

            PTZ設備需支持通過GetStatus命令報告PTZ狀態。PTZ狀態包含以下信息:
            • 位置Position (可選) – 引用空間指定云臺單元的絕對位置。相應PTZ配置的默認絕對空間應在位置元素中引用。如果設備有StatusPosition能力,則需要顯示此信息。
            • 移動狀態MoveStatus(可選) – 表示水平/俯仰/變焦設備單元當前是否正在移動、空閑或處于位置狀態。如果設備有MoveStatus能力,則需要顯示此信息。未知狀態不應在正常錯誤中使用,但是在初始化或錯誤狀況下使用。
            • 錯誤Error (可選) – 表示當前PTZ錯誤狀態。MoveStatus未知狀態時,顯示這個字段。
            • 國際標準時間 UTC Time – 指定生成狀態時的UTC時間。
            請求(REQUEST):
            • ProfileToken [tt:ReferenceToken]
            對現有媒體配置文件的引用
            響應(RESPONSE): 空消息
            • PTZStatus[tt:PTZStatus]
            請求媒體文件的PTZStatus。
            錯誤(FAULTS)
            • env:Sender - ter:InvalidArgVal - ter:NoProfile
            請求的配置文件token內ProfileToken不存在。
            • env:Sender - ter:InvalidArgVal - ter:NoPTZProfile
            請求的配置文件token未引用PTZ配置。
            • env:Receiver – ter:Action - ter:NoStatus
            請求的媒體配置文件中沒有可用的PTZ狀態。
            訪問權限類(ACCESS CLASS)
                READ_MEDIA

            posted @ 2021-06-19 20:38 canaan 閱讀(2469) | 評論 (0)編輯 收藏
                 摘要:   5.   服務 5.1      PTZ節點 5.1.1.   常規          支持PTZ的設備可以有多個PTZ節點。PTZ節點可以表示機械PTZ驅動器。上傳的云臺驅動程序或數字...  閱讀全文
            posted @ 2021-06-17 16:34 canaan 閱讀(1558) | 評論 (0)編輯 收藏
                 摘要: 1.   范圍          本文檔定義了用于配置和操作云臺變焦控制器的web服務接口。此外,還定義了相關事件。 Web服務的使用不在本文檔的范圍內。請參考ONVIF核心規范。 2.   引用標準 ONVIF核心規范 <http://www...  閱讀全文
            posted @ 2021-06-16 21:59 canaan 閱讀(1770) | 評論 (0)編輯 收藏
            縱觀歷史,一代代偉人,哲學家,或是帝國;
            曾經的波斯帝國,你在哪里?
            曾經的亞歷山大,又去了何方,是否也漸漸被人遺忘?
            埃及艷后,伊麗莎白,你們的名氣雖大,但終歸已是塵土。

            橫看世界,地球你在太陽系中算小的;
            太陽系你在銀河系中又是怎樣的地位?
            銀河系啊,你在宇宙中又占哪個位置?

            人啊,你在地球上可以算是一個管理者。
            你今日為房子勞碌而委屈了自己,你自己有想過嗎?
            你昨日因為一件小事而悶悶生氣,又何必呢?

            我不知是明天太陽先升起,還是意外先來臨。
            曾經你相信生活不止眼前的茍且,現在還相信還有詩和遠方的田野嗎?

            你是否將自己局限在自己想象的框架中了呢?

            posted @ 2017-08-05 23:26 canaan 閱讀(937) | 評論 (2)編輯 收藏
            c#與C++類型轉換,網摘2011-12-08 8:33//c++:HANDLE(void   *)          ----    c#:System.IntPtr      
            //c++:Byte(unsigned   char)     ----    c#:System.Byte       
            //c++:SHORT(short)              ----    c#:System.Int16       
            //c++:WORD(unsigned   short)    ----    c#:System.UInt16      
             //c++:INT(int)                 ----    c#:System.Int16      
            //c++:INT(int)                  ----    c#:System.Int32       
            //c++:UINT(unsigned   int)      ----    c#:System.UInt16      
            //c++:UINT(unsigned   int)      ----    c#:System.UInt32      
            //c++:LONG(long)                ----    c#:System.Int32       
            //c++:ULONG(unsigned   long)    ----    c#:System.UInt32       
            //c++:DWORD(unsigned   long)    ----    c#:System.UInt32       
            //c++:DECIMAL                   ----    c#:System.Decimal       
            //c++:BOOL(long)                ----    c#:System.Boolean       
            //c++:CHAR(char)                ----    c#:System.Char       
            //c++:LPSTR(char   *)           ----    c#:System.String       
            //c++:LPWSTR(wchar_t   *)       ----    c#:System.String       
            //c++:LPCSTR(const   char   *)  ----    c#:System.String       
            //c++:LPCWSTR(const   wchar_t   *)      ----    c#:System.String       
            //c++:PCAHR(char   *)   ----    c#:System.String       
            //c++:BSTR              ----    c#:System.String       
            //c++:FLOAT(float)      ----    c#:System.Single       
            //c++:DOUBLE(double)    ----    c#:System.Double       
            //c++:VARIANT           ----    c#:System.Object       
            //c++:PBYTE(byte   *)   ----    c#:System.Byte[]       
            //c++:BSTR      ----    c#:StringBuilder      
            //c++:LPCTSTR   ----    c#:StringBuilder      
            //c++:LPCTSTR   ----    c#:string      
            //c++:LPTSTR    ----    c#:[MarshalAs(UnmanagedType.LPTStr)] string       
            //c++:LPTSTR 輸出變量名    ----    c#:StringBuilder 輸出變量名      
            //c++:LPCWSTR   ----    c#:IntPtr      
            //c++:BOOL      ----    c#:bool         
            //c++:HMODULE   ----    c#:IntPtr          
            //c++:HINSTANCE ----    c#:IntPtr       
            //c++:結構體    ----    c#:public struct 結構體{};       
            //c++:結構體 **變量名   ----    c#:out 變量名 
            //C#中提前申明一個結構體實例化后的變量名      
            //c++:結構體 &變量名    ----    c#:ref 結構體變量名               
            //c++:WORD      ----    c#:ushort      
            //c++:DWORD     ----    c#:uint      
            //c++:DWORD     ----    c#:int      
            //c++:UCHAR     ----    c#:int      
            //c++:UCHAR     ----    c#:byte      
            //c++:UCHAR*    ----    c#:string      
            //c++:UCHAR*    ----    c#:IntPtr      
            //c++:GUID      ----    c#:Guid      
            //c++:Handle    ----    c#:IntPtr      
            //c++:HWND      ----    c#:IntPtr      
            //c++:DWORD     ----    c#:int      
            //c++:COLORREF  ----    c#:uint      
            //c++:unsigned char     ----    c#:byte      
            //c++:unsigned char *   ----    c#:ref byte      
            //c++:unsigned char *   ----    c#:[MarshalAs(UnmanagedType.LPArray)] byte[]      
            //c++:unsigned char *   ----    c#:[MarshalAs(UnmanagedType.LPArray)] Intptr      
            //c++:unsigned char &   ----    c#:ref byte      
            //c++:unsigned char 變量名      ----    c#:byte 變量名      
            //c++:unsigned short 變量名     ----    c#:ushort 變量名      
            //c++:unsigned int 變量名       ----    c#:uint 變量名      
            //c++:unsigned long 變量名      ----    c#:ulong 變量名      
            //c++:char 變量名       ----    c#:byte 變量名 
            //C++中一個字符用一個字節表示,C#中一個字符用兩個字節表示      
            //c++:char 數組名[數組大小]     ----    c#:MarshalAs(UnmanagedType.ByValTStr, SizeConst = 數組大小)]      
            public string 數組名; ushort      
            //c++:char *            ----    c#:string     
            //傳入參數      
            //c++:char *            ----    c#:StringBuilder
            //傳出參數      
            //c++:char *變量名      ----    c#:ref string 變量名      
            //c++:char *輸入變量名  ----    c#:string 輸入變量名      
            //c++:char *輸出變量名  ----    c#:[MarshalAs(UnmanagedType.LPStr)] StringBuilder 輸出變量名      
            //c++:char **           ----    c#:string      
            //c++:char **變量名     ----    c#:ref string 變量名      
            //c++:const char *      ----    c#:string      
            //c++:char[]            ----    c#:string      
            //c++:char 變量名[數組大小]     ----    c#:[MarshalAs(UnmanagedType.ByValTStr,SizeConst=數組大小)] public string 變量名;   
            //c++:struct 結構體名 *變量名   ----    c#:ref 結構體名變量名      
            //c++:委托 變量名   ----    c#:委托變量名      
            //c++:int       ----    c#:int      
            //c++:int       ----    c#:ref int      
            //c++:int &     ----    c#:ref int      
            //c++:int *     ----    c#:ref int    
            //C#中調用前需定義int 變量名 = 0;      
            //c++:*int      ----    c#:IntPtr      
            //c++:int32 PIPTR *     ----    c#:int32[]      
            //c++:float PIPTR *     ----    c#:float[]              
            //c++:double** 數組名          ----    c#:ref double 數組名      
            //c++:double*[] 數組名          ----    c#:ref double 數組名      
            //c++:long          ----    c#:int      
            //c++:ulong         ----    c#:int              
            //c++:UINT8 *       ----    c#:ref byte     
            //C#中調用前需定義byte 變量名 = new byte();              
            //c++:handle    ----    c#:IntPtr      
            //c++:hwnd      ----    c#:IntPtr                      
            //c++:void *    ----    c#:IntPtr              
            //c++:void * user_obj_param    ----    c#:IntPtr user_obj_param      
            //c++:void * 對象名稱    ----    c#:([MarshalAs(UnmanagedType.AsAny)]Object 對象名稱              
            //c++:char, INT8, SBYTE, CHAR                               ----    c#:System.SByte        
            //c++:short, short int, INT16, SHORT                        ----    c#:System.Int16        
            //c++:int, long, long int, INT32, LONG32, BOOL , INT        ----    c#:System.Int32        
            //c++:__int64, INT64, LONGLONG                              ----    c#:System.Int64        
            //c++:unsigned char, UINT8, UCHAR , BYTE                    ----    c#:System.Byte        
            //c++:unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR , __wchar_t             ----    c#:System.UInt16        
            //c++:unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT      ----    c#:System.UInt32        
            //c++:unsigned __int64, UINT64, DWORDLONG, ULONGLONG                            ----    c#:System.UInt64        
            //c++:float, FLOAT                                                              ----    c#:System.Single        
            //c++:double, long double, DOUBLE                                               ----    c#:System.Double        
            //Win32 Types        ----  CLR Type                
            //Struct需要在C#里重新定義一個Struct      
            //CallBack回調函數需要封裝在一個委托里,delegate static extern int FunCallBack(string str);      
            //unsigned char** ppImage替換成IntPtr ppImage      
            //int& nWidth替換成ref int nWidth      
            //int*, int&, 則都可用 ref int 對應      
            //雙針指類型參數,可以用 ref IntPtr      
            //函數指針使用c++: typedef double (*fun_type1)(double); 對應 c#:public delegate double  fun_type1(double);      
            //char* 的操作c++: char*; 對應 c#:StringBuilder;      
            //c#中使用指針:在需要使用指針的地方 加 unsafe      
            //unsigned   char對應public   byte      
            posted @ 2016-07-22 14:36 canaan 閱讀(386) | 評論 (0)編輯 收藏
            提示:學習這課之前,我們假設你已經知道如何用imread載入圖像并用imshow顯示在窗口中。 如果還不知道那么先看
            新手入門學習OpenCV2.4.13 載入并顯示圖像 (二)
            目標:
            在這個教程中你將會學到:
            1、使用imread載入圖像
            2、使用cvtColor將圖像沖BGR格式轉換為Grayscale格式
            3、使用imwrite將轉換好的圖像保存到硬盤上

            源碼:
             1 #include <cv.h>
             2 #include <highgui.h>
             3 
             4 using namespace cv;
             5 
             6 int main(int argc, char ** argv)
             7 {
             8     char* imageName = argv[1];
             9     Mat image;
            10     image = imread(imageName, 1);
            11 
            12     if (2 != argc || !image.data)
            13     {
            14         printf("No image data\n");
            15         return -1;
            16     }
            17 
            18     Mat gray_image;
            19     cvtColor(image, gray_image, CV_BGR2GRAY);
            20 
            21     imwrite("D:/images/Gray_Image.jpg", gray_image);
            22 
            23     namedWindow(imageName, CV_WINDOW_AUTOSIZE);
            24     namedWindow("Gray image", CV_WINDOW_AUTOSIZE);
            25 
            26     imshow(imageName, image);
            27     imshow("Gray image", gray_image);
            28 
            29     waitKey(0);                                      
            30     return 0;
            31 }

            說明:
            1、通過imread載入一個BGR圖像。
            2、將圖像沖BGR轉換成Grayscale格式:
            cvtColor( image, gray_image, CV_BGR2GRAY);
            cvtColor參數:
            a、源圖像(image)
            b、目標圖像(gray_image),用于保存轉換好的圖像。
            c、指定轉換類型。

            3、保存圖像
            imwrite("../../images/Gray_Image.jpg", gray_image);

            4、最后通過窗口顯示圖像,查看轉換效果。
            namedWindow(imageName, CV_WINDOW_AUTOSIZE);
             namedWindow("Gray image", CV_WINDOW_AUTOSIZE);
             imshow(imageName, image);
             imshow("Gray image", gray_image);

            結果:
            posted @ 2016-07-12 07:40 canaan 閱讀(1117) | 評論 (0)編輯 收藏
            目標
            學習:1、使用imread載入圖像。
                     2、使用namedWindow創建命名OpenCV窗口。
                     3、使用imshow在OpenCV窗口中顯示圖像。

            源碼
             1 #include <opencv2/core/core.hpp>
             2 #include <opencv2/highgui/highgui.hpp>
             3 #include <iostream>
             4 
             5 using namespace cv;
             6 using namespace std;
             7 
             8 int main(int argc, char ** argv)
             9 {
            10     if (2 != argc)
            11     {
            12         cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
            13         return -1;
            14     }
            15 
            16     Mat image;
            17     image = imread(argv[1], CV_LOAD_IMAGE_COLOR);          // Read the file
            18 
            19     if (!image.data)                                                                 // Check for invalid input
            20     {
            21         cout << "Could not open or find the image" << std::endl;
            22         return -1;
            23     }
            24 
            25     namedWindow("Display window", WINDOW_AUTOSIZE);      // Create a window for display
            26     imshow("Display window", image);                                     // Show our image inside it.
            27 
            28     waitKey(0);                                                                       // wait for a keystroke in the window
            29     return 0;
            30 }

            說明
            在使用OpenCV 2 的功能之前,幾乎總是要包含
            1、core 部分,定義庫的基本構建塊
            2、highgui模塊,包含輸入輸出操作函數。

             #include <opencv2/core/core.hpp>
             #include <opencv2/highgui/highgui.hpp>
             #include <iostream>

            還需要include<iostream>這樣更容易在console上輸出輸入。為了避免數據結構和函數名稱與其他庫沖突,OpenCV有自己的命名空間cv。當然為了避免在每個關鍵字前都加cv::keyword,可以在頭部導入該命名空間。
            using namespace cv;
            using namespace std;

            需要在命令行輸入有效的圖像名稱。
            if (2 != argc)
            {
                  cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
                  return -1;
            }
            然后創建Mat對象用于存儲載入的圖像數據。
            Mat image;

            調用imread函數載入圖像(圖像名稱為argv[1]指定的)。第二個參數指定圖像格式。
            1、CV_LOAD_IMAGE_UNCHANGED (<0) loads the image as is(including the alpha channel if present)
            2、CV_LOAD_IMAGE_GRAYSCALE (0) loads the image as an intensity one
            3、CV_LOAD_IMAGE_COLOR (>0) loads the image in the BGR format

            image = imread(argv[1], CV_LOAD_IMAGE_COLOR);      // Read the file
            如果第二個參數未指定,那么默認為CV_LOAD_IMAGE_COLOR

            為了檢查圖像是否正常載入,我們用namedWindow函數創建一個OpenCV窗口來顯示圖像。需要指定窗口名稱和大小。
            第二個參數默認為:WINDOW_AUTOSIZE
            1、WINDOW_AUTOSIZE    只支持QT平臺。
            2、WINDOW_NORMAL       QT上支持窗口調整大小。

            最后在創建的窗口中顯示圖像
            imshow("Display window", image);   
                                         
                 

            結果
            編譯執行程序。
            ./DisplayImage d:\apple.jpg
            posted @ 2016-07-11 07:58 canaan 閱讀(954) | 評論 (0)編輯 收藏
            中國 中華 偉大 民國 民族,
            如何生成所有組合(例:中國,中華民族,中華民國,偉大中華,偉大中華民族) 。
            注意:中華民國,民國中華 算一個。
            posted @ 2012-11-13 11:57 canaan 閱讀(279) | 評論 (0)編輯 收藏
             
              In the Internet address family, this structure is used by Windows Sockets to specify a local or remote endpoint address to which to connect a socket. This is the form of the sockaddr structure specific to the Internet address family and can be cast to sockaddr.
            1 struct sockaddr_in
            2 {
            3     short sin_family;             //  (16位)地址家族(即指定地址格式),應為AF_INET。internetwork: UDP, TCP, etc.
            4     unsigned short sin_port;  // (16位)端口號
            5     struct in_addr sin_addr    // (32位) IP地址
            6     char sin_zero[8];            // (64位) 填充,使結構體與SOCKADDR大小相同
            7 }
            8 
            9 總共為:128位(即16字節)

             需要頭文件:winsock2.h
            posted @ 2012-07-12 16:28 canaan 閱讀(1219) | 評論 (0)編輯 收藏
            1 void inplace_swap(int *x, int *y)
            2 {
            3     *= *^ *y;
            4     *= *^ *y;
            5     *= *^ *y;
            6 }
            posted @ 2012-05-29 13:58 canaan 閱讀(1775) | 評論 (6)編輯 收藏
            僅列出標題  下一頁
            久久精品国产91久久麻豆自制 | 蜜桃麻豆www久久国产精品| 久久久久久久亚洲Av无码| 亚洲日本va中文字幕久久| 99久久精品国产免看国产一区| 亚洲国产精品一区二区久久hs| 亚洲婷婷国产精品电影人久久| 久久久国产精品亚洲一区| 久久综合欧美成人| 亚洲午夜久久久影院伊人| 久久免费美女视频| 精品久久久无码21p发布| 日本福利片国产午夜久久| 99久久夜色精品国产网站| 狠狠狠色丁香婷婷综合久久五月| 久久久久国产精品麻豆AR影院| 国产精品99久久久精品无码| 精品久久久久久久中文字幕| 伊人久久大香线蕉av不变影院| 9999国产精品欧美久久久久久| 九九久久自然熟的香蕉图片| 香蕉久久永久视频| 国产精自产拍久久久久久蜜| 99久久久国产精品免费无卡顿| 伊人久久大香线蕉综合网站| 99久久精品九九亚洲精品| 久久香综合精品久久伊人| 久久只有这里有精品4| 亚洲精品乱码久久久久久蜜桃 | 久久这里只有精品18| 久久伊人五月天论坛| 国产激情久久久久影院老熟女免费| 久久精品亚洲一区二区三区浴池| 无码人妻久久一区二区三区蜜桃 | 精品国产99久久久久久麻豆| 久久久久亚洲?V成人无码| 99久久国产亚洲高清观看2024| 国产日产久久高清欧美一区| 国产精品久久久久久久久| 国产三级久久久精品麻豆三级| 99久久久国产精品免费无卡顿|