直接贴代码,我在这个大佬(https://www.bilibili.com/video/BV1f5411t7oD)的代码基础上进行了修改
这是他的代码:(方便你们更好的理解)
#include<stdio.h>
#include<opencv2/opencv.hpp>
#include<string>
#include<vector>
#include<windows.h>
using namespace cv;
using namespace std;
int main()
{
VideoCapture video;
Mat frame, gray;
video.open("E:/黑人抬棺.mp4");
int cols = video.get(CAP_PROP_FRAME_WIDTH);
int rows = video.get(CAP_PROP_FRAME_HEIGHT);
int framecount = video.get(CAP_PROP_FRAME_COUNT);
int fps = video.get(CAP_PROP_FPS);
int delty = 10;
int deltx = 5;
int value;
int n = 0;
char c[] = " .,-'`:!1&@#$";
vector<string> v;
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {
0,0 };
while (n < framecount)
{
n++;
video.read(frame);
cvtColor(frame, gray, COLOR_BGR2GRAY);
string s = "";
for (int row = 0; row < rows - delty; row = row + delty)
{
for (int col = 0; col < cols - deltx; col = col + deltx)
{
value = gray.at<uchar>(row, col);
s = s + c[int(value / 20)];
}
s = s + '\n';
}
v.push_back(s);
system("cls");//建议不要在这里用,在下面输出循环之前用,不然会很慢,请参考我的代码
printf("正在读取:%d/%d", n, framecount);
}
for (i