我正在使用opencv2来打开一系列图像(On raspberry pi)我发现过渡非常生涩(即打开图像)有没有办法让这个顺畅呢?
下面的代码片段是我正在使用的atm(我想我应该使用mat:)
void loadImage()
{
int nImages = 6;
for (int i = 0; i < nImages; ++i)
{
IplImage *image;
char filename[100];
strcpy(filename, "images/");
char frameNo[10];
sprintf(frameNo, "%03i", i);
strcat(filename, frameNo);
strcat(filename, ".jpg");
image = cvLoadImage(filename);
cvNamedWindow("pic");
cvShowImage("pic",image);
cvMoveWindow("pic", 0, 0);
cvWaitKey(1000);
}
}
答案 0 :(得分:1)
你必须在其他线程中加载你的图像,或者如果你是懒惰的话,你必须在循环之前加载你的图像。它应该是这样的:
void loadImages() {
IplImage *images[NUM_IMAGES];
images[0] = cvLoadImage("filename1.jpg");
images[1] = cvLoadImage("filename1.jpg");
images[2] = cvLoadImage("filename1.jpg");
.
.
. (etc)
}
void showImages(){
loadImages();
for (int i = 0; i < nImages; ++i){
cvNamedWindow("pic");
cvShowImage("pic",images[i]);
cvMoveWindow("pic", 0, 0);
cvWaitKey(1000);
}
}
当然,图像*images[]
的pinter数组应该声明为全局,或者你应该将它从loadimages()
函数传递给showImages()
(更好的解决方案)。