91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8.44MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-10-09
  • 語言: C/C++
  • 標簽: opencv??

資源簡介

基于特征點匹配的視頻穩像,opencv。有C++和python代碼。 這個文件夾里面的代碼有更新,詳細見https://blog.csdn.net/luohenyj/article/details/88355444

資源截圖

代碼片段和文件信息

//?video_stabilization.cpp?:?此文件包含?“main“?函數。程序執行將在此處開始并結束。
//

#include?“pch.h“
#include?
#include?
#include?
#include?
#include?

using?namespace?std;
using?namespace?cv;

//?In?frames.?The?larger?the?more?stable?the?video?but?less?reactive?to?sudden?panning?移動平均滑動窗口大小
const?int?SMOOTHING_RADIUS?=?50;?

/**
?*?@brief?運動信息結構體
?*
?*/
struct?TransformParam
{
TransformParam()?{}
//x軸信息,y軸信息,角度信息
TransformParam(double?_dx?double?_dy?double?_da)
{
dx?=?_dx;
dy?=?_dy;
da?=?_da;
}

double?dx;
double?dy;
//?angle
double?da;

void?getTransform(Mat?&T)
{
//?Reconstruct?transformation?matrix?accordingly?to?new?values?重建變換矩陣
T.at(0?0)?=?cos(da);
T.at(0?1)?=?-sin(da);
T.at(1?0)?=?sin(da);
T.at(1?1)?=?cos(da);

T.at(0?2)?=?dx;
T.at(1?2)?=?dy;
}
};

/**
?*?@brief?軌跡結構體
?*
?*/
struct?Trajectory
{
Trajectory()?{}
Trajectory(double?_x?double?_y?double?_a)
{
x?=?_x;
y?=?_y;
a?=?_a;
}

double?x;
double?y;
//?angle
double?a;
};

/**
?*?@brief?軌跡累積
?*
?*?@param?transforms?運動信息結構體
?*?@return?vector?軌跡結構體
?*/
vector?cumsum(vector?&transforms)
{
//?trajectory?at?all?frames?所有幀的運動軌跡
vector?trajectory;
//?Accumulated?frame?to?frame?transform?累加計算xy以及a(角度)
double?a?=?0;
double?x?=?0;
double?y?=?0;

//累加
for?(size_t?i?=?0;?i? {
x?+=?transforms[i].dx;
y?+=?transforms[i].dy;
a?+=?transforms[i].da;

trajectory.push_back(Trajectory(x?y?a));
}

return?trajectory;
}

/**
?*?@brief?平滑運動軌跡
?*
?*?@param?trajectory?運動軌跡
?*?@param?radius?窗格大小
?*?@return?vector
?*/
vector?smooth(vector?&trajectory?int?radius)
{
//平滑后的運動軌跡
vector?smoothed_trajectory;
//移動滑動窗格
for?(size_t?i?=?0;?i? {
double?sum_x?=?0;
double?sum_y?=?0;
double?sum_a?=?0;
int?count?=?0;

for?(int?j?=?-radius;?j?<=?radius;?j++)
{
if?(i?+?j?>=?0?&&?i?+?j? {
sum_x?+=?trajectory[i?+?j].x;
sum_y?+=?trajectory[i?+?j].y;
sum_a?+=?trajectory[i?+?j].a;

count++;
}
}

double?avg_a?=?sum_a?/?count;
double?avg_x?=?sum_x?/?count;
double?avg_y?=?sum_y?/?count;

smoothed_trajectory.push_back(Trajectory(avg_x?avg_y?avg_a));
}

return?smoothed_trajectory;
}

/**
?*?@brief?
?*?
?*?@param?frame_stabilized?
?*/
void?fixBorder(Mat?&frame_stabilized)
{
//將原圖擴大為1.04倍,然后截取原圖尺寸相等大小區域
Mat?T?=?getRotationMatrix2D(Point2f(frame_stabilized.cols?/?2?frame_stabilized.rows?/?2)?0?1.04);
//仿射變換
warpAffine(frame_stabilized?frame_stabilized?T?frame_stabilized.size());
}

int?main(int?argc?char?**argv)
{
//?Read?input?video?讀取視頻
VideoCapture?cap(“./video/detect.mp4“);

//?Get?frame?count?讀取

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????8843772??2019-03-07?08:34??video\detect.mp4
?????文件???????15990??2019-03-08?16:56??video_stabilization.cpp
?????文件????????4604??2019-03-08?16:48??video_stabilization.py
?????目錄???????????0??2019-03-08?16:44??video\

評論

共有 條評論