我正在编写一些C ++代码来显示从相机获得的图像。在代码中,每当有新图像通过时,相机都会调用一个回调函数,我将在存储该图像的内存中获得一个指针。现在,我想使用CImg每次通过图像时都显示图像(如视频),并可能使用CImg中的函数来处理图像。
我正在考虑从回调函数中的指针定义Cimg实例,并将CImg display的指针发送给回调函数。因此,每次调用回调函数时,实例都会被覆盖,然后显示新图像。
struct data {
CImgDisplay* disp;
};
int callBack(int Nimg, data *pointersPassedIn){
auto disp = pointersPassedIn->disp;
int width,height;
getParameter(WIDTH, &width);//Retrieve height and width of the image from camera
getParameter(HEIGHT, &height);
unsigned short* imgPtr = (unsigned short*)getImagePtr(Nimg);//Retrieve image pointer from camera, as 16-bit image, use unsigned short
CImg <unsigned short> img(imgPtr ,width,height);
disp->render(img);
disp->paint();
return 0 ;
};
int main(){
int width,height;
getParameter(WIDTH, &width);
getParameter(HEIGHT, &height);
CImgDisplay disp(width,height);
registerCallBack(&disp);//will add &disp to struct data and send it to call back function
aquire();
while (!disp.is_closed()){
;
}
stopAquire();
};
但是,仅显示一张图像,然后程序退出自身。
谢谢