gpt4 book ai didi

CvLoadImage 函数和列表

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:17 27 4
gpt4 key购买 nike

我正在使用 CvLoadImage(C 编程语言)。

不是传递我的路径或名称,比方说,.jpg 文件作为函数的参数,我可以使用一个列表(动态结构),它包含每个 .jpg 图片我要打开?

例如,我认为代码是这样的:

CvLoadImage(列表->名称)

声明了一个包含名称所有路径的列表。

而不是像这样:CvLoadImage("name.jpg")

在我阅读的每本手册中,它只是指定函数接收一个图像的名称或路径,但我想递归地打开一个接一个的图像,这些路径来自列表,而且我不知道该怎么做。

这就是我能做的(有些东西是西类牙语的,因为我们说西类牙语,还有一些东西和文件混在一起)

struct fotos
{
char nom[30];
struct fotos *sig;
};
//....
struct fotos *lini;
//....

while(lini->sig!=0)
{
image=cvLoadImage(lini->nom,1);
cvNamedWindow("ejemplo", 0);
cvMoveWindow("ejemplo", 100, 100);
cvShowImage("ejemplo", image);
cvWaitKey(0);
lini=lini->sig;
}
image=cvLoadImage(lini->nom,1);
cvNamedWindow("ejemplo", 0);
cvMoveWindow("ejemplo", 100, 100);
cvShowImage("ejemplo", image);
cvWaitKey(0);
cvReleaseImage(&image);

但它也不行。它会创建一个新窗口,但不会加载任何图像。

最佳答案

我自己没有使用过 CvLoadImage(),但快速谷歌搜索显示它有一个表单原型(prototype):

IplImage* cvLoadImage( const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR );

该函数显然设计为取一个,而且只有一个文件名。它将文件加载到内存中并返回一个指向它加载它的位置的指针,或者返回 NULL 表示错误。

如果要加载多个文件,则需要重复调​​用该函数,每个文件一个。您可能会考虑的一件事是设置一个指向 char 的指针数组:

void load_images(void)
{
int i; /* Used for looping */

/* Array of filenames */
char *filenames[4] = {
"/path/to/image0.jpg",
"/path/to/image1.jpg",
"/path/to/image2.jpg",
"/path/to/image3.jpg",
};

/* Array to store the addresses of the loaded files */
IplImage *file_addresses[4];

for (i = 0; i < 4; i++) {
file_addresses[i] = cvLoadImage(filenames[i], CV_LOAD_IMAGE_COLOR);
}

/* The address of image number N, where N starts at zero
is now in file_addresses[N]. Don't forget to check that
any given address is not NULL before you use it, in case
there was a loading error */
}

您可以轻松地将数组替换为链表或您喜欢的任何其他数据结构。您还可以修改该函数以接收指向要填充的列表的指针,或返回指向它创建的新列表的指针等。

关于CvLoadImage 函数和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505231/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com