【发布时间】:2010-11-17 08:30:10
【问题描述】:
所以我已经使用 opencv 网页上的 c++ 帧访问包装器成功访问了帧中的像素数据
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 循环遍历帧像素数组,例如:
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 呢?
谢谢
【问题讨论】:
标签: c++ image-processing opencv