Member 13430259 Ответов: 1

Я пишу пример кода для копирования изображения в определенную папку, но он показывает ошибку во время выполнения?


Exception thrown at 0x00007FF7D4631485 in homo_test.exe: 0xC0000005: Access violation writing location 0x00007FF7D4633318.

The program '[8148] homo_test.exe' has exited with code 0 (0x0)


Что я уже пробовал:

#include <stdio.h>
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/calib3d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include<sstream>
#define _CRT_SECURE_NO_WARNINGS
using namespace cv;
using namespace cv::xfeatures2d;
/* @function main */
int main(int argc, char** argv)
{

	char filename[128];
	Mat frame;
	cv::VideoCapture cap(0);
	if (!cap.isOpened())
	{
		std::cerr << "ERROR: Could not open video " << std::endl;
		return 1;
	}
	cvNamedWindow("MyVideo", CV_WINDOW_AUTOSIZE);
	int frame_count = 0;
	bool should_stop = false;

	while (!should_stop)
	{

		cv::Mat frame;
		cap >> frame; //get a new frame from the video
		if (frame.empty())
		{
			should_stop = true; //we arrived to the end of the video
			continue;
		}

		sprintf(filename, "frame_%06d.jpg", frame_count);
		cv::imwrite(filename, frame);
		strcpy("\"E:\"",filename);
		frame_count++;
		
		if (frame_count == 70)
		{

			break;
		}
	}
		/* @function readme */
}

1 Ответов

Рейтинг:
0

«_Superman_»

strcpy колл ошибается.
Сигнатура функции такова char *strcpy(char *strDestination, const char *strSource);
Что ты здесь пытаешься сделать?

Если вы хотите создать файл по адресу E:\, вы можете добавить его в имя файла - sprintf(filename, "E:\\frame_%06d.jpg", frame_count);