⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvpixelaccess.h

📁 微软的基于HMM的人脸识别原代码, 非常经典的说
💻 H
字号:
/*M///////////////////////////////////////////////////////////////////////////////////////////  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.////  By downloading, copying, installing or using the software you agree to this license.//  If you do not agree to this license, do not download, install,//  copy or use the software.//////                        Intel License Agreement//                For Open Source Computer Vision Library//// Copyright (C) 2000, Intel Corporation, all rights reserved.// Third party copyrights are property of their respective owners.//// Redistribution and use in source and binary forms, with or without modification,// are permitted provided that the following conditions are met:////   * Redistribution's of source code must retain the above copyright notice,//     this list of conditions and the following disclaimer.////   * Redistribution's in binary form must reproduce the above copyright notice,//     this list of conditions and the following disclaimer in the documentation//     and/or other materials provided with the distribution.////   * The name of Intel Corporation may not be used to endorse or promote products//     derived from this software without specific prior written permission.//// This software is provided by the copyright holders and contributors "as is" and// any express or implied warranties, including, but not limited to, the implied// warranties of merchantability and fitness for a particular purpose are disclaimed.// In no event shall the Intel Corporation or contributors be liable for any direct,// indirect, incidental, special, exemplary, or consequential damages// (including, but not limited to, procurement of substitute goods or services;// loss of use, data, or profits; or business interruption) however caused// and on any theory of liability, whether in contract, strict liability,// or tort (including negligence or otherwise) arising in any way out of// the use of this software, even if advised of the possibility of such damage.////M*/#ifndef _CV_PIXELACCESS_H_#define _CV_PIXELACCESS_H_typedef struct _CvPixelPosition8u{    unsigned char*   currline;      /* pointer to the start of the current pixel line   */    unsigned char*   topline;       /* pointer to the start of the top pixel line       */    unsigned char*   bottomline;    /* pointer to the start of the first line           */                                    /* which is below the image                         */    int     x;                      /* current x coordinate ( in pixels )	            */    int     width;                  /* width of the image  ( in pixels )	            */    int     height;                 /* height of the image  ( in pixels )	            */    int     step;                   /* distance between lines ( in elements of single   */                                    /* plane )                                          */    int     step_arr[3];            /* array: ( 0, -step, step ). It is used for        */                                    /* vertical moving                                  */} CvPixelPosition8u;/* this structure differs from the above only in data type */typedef struct _CvPixelPosition8s{    char*   currline;    char*   topline;    char*   bottomline;    int     x;    int     width;    int     height;    int     step;    int     step_arr[3];} CvPixelPosition8s;/* this structure differs from the CvPixelPosition8u only in data type */typedef struct _CvPixelPosition32f{    float*  currline;    float*  topline;    float*  bottomline;    int     x;    int     width;    int     height;    int     step;    int     step_arr[3];} CvPixelPosition32f;/* Initialize one of the CvPixelPosition structures.   *//*  pos    - initialized structure                     *//*  origin - pointer to the left-top corner of the ROI *//*  step   - width of the whole image in bytes         *//*  roi    - width & height of the ROI                 *//*  x, y   - initial position	                       */#define CV_INIT_PIXEL_POS(pos, origin, _step, roi, _x, _y, orientation)    \    (                                                                        \    (pos).step = (_step)/sizeof((pos).currline[0]) * (orientation ? -1 : 1), \    (pos).width = (roi).width,                                               \    (pos).height = (roi).height,                                             \    (pos).bottomline = (origin) + (pos).step*(pos).height,                   \    (pos).topline = (origin) - (pos).step,                                   \    (pos).step_arr[0] = 0,                                                   \    (pos).step_arr[1] = -(pos).step,                                         \    (pos).step_arr[2] = (pos).step,                                          \    (pos).x = (_x),                                                          \    (pos).currline = (origin) + (pos).step*(_y) )/* Move to specified point ( absolute shift ) *//*  pos    - position structure               *//*  x, y   - coordinates of the new position  *//*  cs     - number of the image channels     */#define CV_MOVE_TO( pos, _x, _y, cs )                                                   \((pos).currline = (_y) >= 0 && (_y) < (pos).height ? (pos).topline + ((_y)+1)*(pos).step : 0, \ (pos).x = (_x) >= 0 && (_x) < (pos).width ? (_x) : 0, (pos).currline + (_x) * (cs) )/* Get current coordinates                    *//*  pos    - position structure               *//*  x, y   - coordinates of the new position  *//*  cs     - number of the image channels     */#define CV_GET_CURRENT( pos, cs )  ((pos).currline + (pos).x * (cs)) /* Move by one pixel relatively to current position *//*  pos    - position structure                     *//*  cs     - number of the image channels           */ /* left */#define CV_MOVE_LEFT( pos, cs ) \ ( --(pos).x >= 0 ? (pos).currline + (pos).x*(cs) : 0 ) /* right */#define CV_MOVE_RIGHT( pos, cs ) \ ( ++(pos).x < (pos).width ? (pos).currline + (pos).x*(cs) : 0 ) /* up */#define CV_MOVE_UP( pos, cs ) \ (((pos).currline -= (pos).step) != (pos).topline ? (pos).currline + (pos).x*(cs) : 0 ) /* down */#define CV_MOVE_DOWN( pos, cs ) \ (((pos).currline += (pos).step) != (pos).bottomline ? (pos).currline + (pos).x*(cs) : 0 ) /* left up */#define CV_MOVE_LU( pos, cs ) ( CV_MOVE_LEFT(pos, cs), CV_MOVE_UP(pos, cs)) /* right up */#define CV_MOVE_RU( pos, cs ) ( CV_MOVE_RIGHT(pos, cs), CV_MOVE_UP(pos, cs)) /* left down */#define CV_MOVE_LD( pos, cs ) ( CV_MOVE_LEFT(pos, cs), CV_MOVE_DOWN(pos, cs)) /* right down */#define CV_MOVE_RD( pos, cs ) ( CV_MOVE_RIGHT(pos, cs), CV_MOVE_DOWN(pos, cs))   /* Move by one pixel relatively to current position with wrapping when the position     *//* achieves image boundary                                                              *//*  pos    - position structure                                                         *//*  cs     - number of the image channels                                               */ /* left */#define CV_MOVE_LEFT_WRAP( pos, cs ) \ ((pos).currline + ( --(pos).x >= 0 ? (pos).x : ((pos).x = (pos).width-1))*(cs)) /* right */#define CV_MOVE_RIGHT_WRAP( pos, cs ) \ ((pos).currline + ( ++(pos).x < (pos).width ? (pos).x : ((pos).x = 0))*(cs) ) /* up */#define CV_MOVE_UP_WRAP( pos, cs ) \    ((((pos).currline -= (pos).step) != (pos).topline ? \    (pos).currline : ((pos).currline = (pos).bottomline - (pos).step)) + (pos).x*(cs) ) /* down */#define CV_MOVE_DOWN_WRAP( pos, cs ) \    ((((pos).currline += (pos).step) != (pos).bottomline ? \    (pos).currline : ((pos).currline = (pos).topline + (pos).step)) + (pos).x*(cs) ) /* left up */#define CV_MOVE_LU_WRAP( pos, cs ) ( CV_MOVE_LEFT_WRAP(pos, cs), CV_MOVE_UP_WRAP(pos, cs))/* right up */#define CV_MOVE_RU_WRAP( pos, cs ) ( CV_MOVE_RIGHT_WRAP(pos, cs), CV_MOVE_UP_WRAP(pos, cs))/* left down */#define CV_MOVE_LD_WRAP( pos, cs ) ( CV_MOVE_LEFT_WRAP(pos, cs), CV_MOVE_DOWN_WRAP(pos, cs))/* right down */#define CV_MOVE_RD_WRAP( pos, cs ) ( CV_MOVE_RIGHT_WRAP(pos, cs), CV_MOVE_DOWN_WRAP(pos, cs)) /* Numeric constants which used for moving in arbitrary direction  */#define CV_SHIFT_NONE   2#define CV_SHIFT_LEFT   1#define CV_SHIFT_RIGHT  3#define CV_SHIFT_UP     6#define CV_SHIFT_DOWN  10#define CV_SHIFT_LU     5#define CV_SHIFT_RU     7#define CV_SHIFT_LD     9#define CV_SHIFT_RD    11 /* Move by one pixel in specified direction                                     *//*  pos    - position structure                                                 *//*  shift  - direction ( it's value must be one of the CV_SHIFT_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -