gpt4 book ai didi

c++ - 抛出 'cv::Exception' 的实例后,OpenCV 中出现错误标志错误。 cvGetMat 中不支持的数组类型

转载 作者:太空宇宙 更新时间:2023-11-03 22:05:59 25 4
gpt4 key购买 nike

我是 OpenCV 的新手,正在尝试读取文件夹中的图像序列。我的代码如下:

#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace cv;
using namespace std;


void loadImage(Mat image,int number)
{
char filename[100];
strcpy(filename, "/home/folder1/imagefolder/");

char frameNo[10];
sprintf(frameNo, "%08i", number);
strcat(filename, frameNo);
strcat(filename, ".png");
cout<< filename;

image = imread(filename);
if (image.empty()) //check whether the image is loaded or not
{
cout << "Error : Image not loaded." << endl;
}
}

int main()
{
Mat image;
int nImages=8;
for (int i = 1; i < nImages; i++)
{
loadImage(image,i);
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(100000);
return 0;

}
}

它被编译,但是在运行可执行文件时,它给出了以下错误:

OpenCV 错误:cvGetMat 中的错误标志(参数或结构字段)(无法识别或不支持的数组类型),文件/home/vuadmin/OpenCV-2.3.1/modules/core/src/array.cpp,第 2482 行在抛出“cv::Exception”实例后调用终止 what():/home/vuadmin/OpenCV-2.3.1/modules/core/src/array.cpp:2482: error: (-206) 函数 cvGetMat 中无法识别或不支持的数组类型中止(核心转储)

请帮我找出错误。

我还尝试了另一种方法,如 OpenCV: Reading image series from a folder

但在我的例子中它只显示第一张图片。

最佳答案

我在你的代码中看到了几个错误:

您的原型(prototype) void loadImage(Mat image,int number) 复制了 cv::Mat 图像,因此在调用此函数后,image 为空.您应该通过引用设置图像

void loadImage(Mat& image,int number)

在这种情况下,imshow( "Display Image", image ); image 参数不能为空。这可能会导致您的 openCV 错误

在程序的入口点还有一件事,您在循环内创建了一个 return 0;,因此程序在第一次迭代时以代码值 0 退出。将返回放在循环之后。顺便说一句,你应该“打开”你的窗口一次,而不是每次迭代,但我不认为这会导致任何错误。

 int main()
{
Mat image;
int nImages=8;
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
for (int i = 1; i < nImages; i++)
{
loadImage(image,i);
imshow( "Display Image", image );
waitKey(100000);

}

return 0;
}

您必须在调用 loadImage(image, i) 后检查图像的有效性,因为在您的函数中,错误消息会打印在标准输出上,但在您的循环中,您不会'对图像进行任何检查

loadImage(image, i);
if ( ! image.empty ())
imshow( "Display Image", image );
waitKey(100000);

关于c++ - 抛出 'cv::Exception' 的实例后,OpenCV 中出现错误标志错误。 cvGetMat 中不支持的数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20785910/

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