Итак, я успешно получил доступ к данным пикселей во фрейме с помощью оболочки доступа к фрейму c ++ на веб-странице opencv
template<class Frame>
class Frame_Data {
IplImage *imgp;
public:
Frame_Data (IplImage *img=0) {imgp = img;}
~Frame_Data () {imgp = 0;}
void operator=(IplImage *img) {imgp=img;}
inline Frame* operator[] (int rowIndex) {
return ((Frame*)(imgp->imageData + rowIndex*imgp->widthStep));
}
};
typedef struct {
unsigned char b,g,r;
} RgbPixel;
typedef struct {
float b,g,r;
} RgbPixelFloat;
typedef Frame_Data<RgbPixel> RgbImage;
Затем я использую 2 для циклов, чтобы пройти через массив пикселей кадра, например:
for (int i = ymin; i < ymax; i++)
{
for (int j = xmin; j < xmax; j++)
{
int r = image[i][j].r;
int g = image[i][j].g;
int b = image[i][j].b;
Итак, допустим, я хочу добавить оператор IF, чтобы проверить цвета данных пикселей. Я видел, как некоторые сайты перечисляют их как
image[i][j].r=0xFF;
or if g < 0x20
Я не привык к шестнадцатеричным значениям, я пытался их найти, но не могу найти никаких ссылок, я привык к cvscalars, так что это значит? Например, что означает 0x20? или как насчет 0xFF?
спасибо