C++,OpenCV:Resize中的断言失败

 v05736708 发布于 2023-01-29 11:03

作为一名C++初学者,我目前面临一个问题,即使代码非常简单,我也无法解决.我一直在寻找互联网上的答案,但没有一个适用于我的问题.

我目前正在使用OpenCV 2.4.8在VS2013下使用C++编写基本SVM.我能够处理相同大小的图像,指定代码开头的固定高度和宽度.

现在,我正在尝试:打开不同大小的图像,将它们调整到一定的较小尺寸,并将之前的代码应用于现在已调整大小的数据集.就那么简单.

这是我的代码的开头:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace cv;
using namespace std;

int main(){

输入参数是:

int Nb_Data_Class_1 = 10;
int Nb_Data_Class_0 = 5;
int Height_Zone = 200;
int Width_Zone = 200;

所以我将所有文件的大小调整为200x200格式.

string Path = "C:\\Users\\....";
string Format = ".jpg";

int Nb_Files = Nb_Data_Class_1 + Nb_Data_Class_0;
Mat TrainingMat(Nb_Files, Zone_Image, CV_32FC1);
Mat TrainingLabels(Nb_Files, 1, CV_32FC1);

对于标记为{1}的类的每个文件 - 它们都被命名为Tree01,Tree02等. - 我打开并调整大小.

for (int i = 0; i < Nb_Data_Class_1; ++i)
{
    stringstream ss;
    ss << Path << "\\Tree0" << i + 1 << Format;
    Mat Image = cv::imread(ss.str(), 0);
    resize(Image, Image, Size(Width_Zone, Height_Zone));}

没有最后一行,事情就完美无缺.我有一个Mat数组,填充0-t0-255数字.现在,我收到以下错误:

OpenCV Error: Assertion failed  >0> in cv::resize, 
    file C:\builds\2-4-PackSlave-win32-vc12-shared\opencv\modules\imgproc\serc\imgwarp.cpp, line 1824

可能是什么问题呢 ?我想也许OpenCV没有正确打开文件; 但是,在那种情况下,一切都可能以前如何运作?仍在疑惑.

任何帮助将非常感激 !提前致谢.

1 个回答
  • 调整大小的唯一原因是缺少Image.即使您检查了某些图像是否被正确读取,但这并不意味着所有图像都是 - 其中一些可能会丢失.从磁盘读取文件是程序非常常见的失败点,因为您永远无法确定读取是否成功.因此,每当您阅读图像时,您确实应该验证它不是空的:

    if (Image.cols == 0) {
         cout << "Error reading file " << ss << endl;
         return -1;
    }
    

    2023-01-29 11:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有