Как начинающий С++, я столкнулся с проблемой, которую я как-то не могу решить, даже если код довольно прост. Я искал answers по всему Интернету, но ни один из них не применим для моей проблемы.
В настоящее время я кодирую базовые SVM с помощью С++ под VS2013, используя OpenCV 2.4.8. Я смог работать с изображениями одинакового размера, указав фиксированную высоту, ширину в начале моего кода.
Теперь я пытаюсь: открывать изображения разных размеров, изменять их размер до определенного более низкого размера и применять предыдущий код к набору данных с измененным размером. Просто как это.
Здесь начало моего кода:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/ml/ml.hpp>
#include <iostream>
#include <math.h>
#include <fstream>
#include <string>
#include <sstream>
#include <windows.h>
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: утверждение не выполнено > 0 > в cv:: resize, файл C:\builds\2-4-PackSlave-win32-vc12-shared\opencv\modules\imgproc\serc\imgwarp.cpp, строка 1824
В чем может быть проблема? Я думал, что, возможно, OpenCV неправильно открыл файлы; но в таком случае, как все могло быть раньше? Все еще интересно.
Любая помощь будет очень признательна! Спасибо заранее.