在网上找了好多教程还是不行,这里提示不支持这种视频编码格式,如何解决这个问题?
格式和后缀对不上就会这样。如果你保存的是.mp4格式的,需要换成下面的cv2.VideoWriter_fourcc('mp4v')
如果是cv2.VideoWriter_fourcc('MJPG'),应该是.avi的格式
cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
换一个python-opencv的版本试试,或者对你的视频文件转码一下
不知道你这个问题是否已经解决, 如果还没有解决的话:#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main() {
double scale_up_x = 1.0;
double scale_up_y = 1.0;
int i = 1;
Mat scaled_f_up, scaled_f_down;
while(i){
auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::stringstream ss;
ss << std::put_time(std::localtime(&t), "%Y-%m-%d-%H:%M:%S");
std::string str_time = ss.str();
Mat pic = imread("/Users/milkman/Desktop/pic1.jpg", 1);
if (pic.empty()) //判断图像文件是否存在
{
std::cout << "读取失败" << std::endl;
return -1;
}
Point p1(900, 900);
putText(pic, "milkman", p1, FONT_HERSHEY_COMPLEX, 2, cv::Scalar(0, 0, 0), 3, 8, 0);
char time = system("time");
putText(pic, str_time, Point(1000, 700), FONT_HERSHEY_COMPLEX, 1, cv::Scalar(0, 0, 0), 3, 8, 0);
rectangle(pic, Point(579, 290), Point(815, 622), cv::Scalar(255, 255, 255), -1);
imshow("test", pic);
waitKey(0);
char ch = waitKey(0);
if(ch == 38){
scale_up_x += 0.1;
resize(pic, scaled_f_up, Size(), scale_up_x, scale_up_y, INTER_LINEAR);
imshow("scaled_f_up", scaled_f_up);
waitKey(0);
}
if(ch == 40){
scale_up_y -= 0.1;
resize(pic, scaled_f_up, Size(), scale_up_x, scale_up_y, INTER_LINEAR);
imshow("scaled_f_up", scaled_f_up);
waitKey(0);
}
if(ch == 27){
break;
}
scanf("%d", &i);
}
return 0;
}
目前除了通过按键调整图像的大小以外,其他功能都已实现。按键功能可能是循环出了问题,还没找到合适的跳出循环的条件,跪求大佬传授经验