📄 cvpixelaccess.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 + -