0
извините за мой английский :) Попытка улучшить мое приложение Я хочу скопировать векторы непосредственно в mysql без строки, возможно ли это?FileStorage -> mysql
FileStorage fs(".yml", FileStorage::WRITE + FileStorage::MEMORY);
Ptr <FaceRecognizer> model0 = createmyfisherRecognizer();
model0->train(images, labels);
model0->save(fs);
void myfisher::save(FileStorage & fs) const {
static char * host = "localhost"; /* host serwera MySQL */
static char * user = "root"; /* nazwa loginu by polaczyc sie do serwera */
static char * password = ""; /* haslo */
static char * sql_db = "fisher"; /* nazwa bazy */
static unsigned int sql_port = NULL; /* port na jakim odbiera/wysyla serwer mysql */
static char * opt_socket = NULL; /* socket name */
static unsigned int sql_flags = 0;
static MYSQL * sock; /* Wskaznik do polaczenia do MySQL */
sock = mysql_init(NULL);
if(mysql_real_connect(sock, host, user, password, sql_db, sql_port, opt_socket, sql_flags))
cout << "Poprawnie polaczyles sie z baza danych" << endl;
else
cout << "Blad w polaczeniu z baza danych" << endl;
fs << "num_components" << _num_components;
fs << "mean" << _mean;
fs << "eigenvalues" << _eigenvalues;
writeFileNodeList(fs, "projections", _projections);
fs << "labels" << _labels;
string buf = fs.releaseAndGetString();
fs.release();
string zapytanie = "insert into baa values (\"" + buf + "\")";
if(!mysql_query(sock, zapytanie.c_str()))
cout << "Poprawnie dodano" << endl;
else
cout << "Blad przy zapisywaniu" << endl;
}
Здесь я разместил код в вопросе. На данный момент он работает таким образом:
- все сохраняется в фс (FileStorage)
- данные в фс преобразуются в строку
- фс отправляемые в базу данных Известно, что программа будет работать намного быстрее, если он будет напрямую скопирован без строки в базу данных.
«Известно, что программа будет работать быстрее без строки« O действительно? Строка - это просто операция с памятью, запись в базу данных - это ввод-вывод. Я бы не был так уверен. Лицо распознавания также не будет быстрым. – MSalters