当前位置: 首页 > wzjs >正文

沭阳哪里有做网站推广的企业网站后台管理

沭阳哪里有做网站推广的,企业网站后台管理,抖音运营推广策划方案,wordpress 推送插件操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::BroxOpticalFlow 是 OpenCV CUDA 模块中实现Brox光流算法的类。该类用于在 GPU 上高效地计算两帧图像之间的稠密光流(Dens…
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::cuda::BroxOpticalFlow 是 OpenCV CUDA 模块中实现Brox光流算法的类。该类用于在 GPU 上高效地计算两帧图像之间的稠密光流(Dense Optical Flow)。

什么是 Brox 光流?

Brox 光流算法是由 Thomas Brox 等人在 2004 年提出的一种基于变分法的稠密光流估计方法,它结合了:

  • 亮度一致性约束(Brightness Constancy Constraint)
  • 运动平滑性约束(Smoothness Constraint)
  • 梯度一致性约束(Gradient Constancy Constraint)

这个算法在准确性和鲁棒性方面表现良好,尤其适用于小到中等运动的场景。

cv::cuda::BroxOpticalFlow 类概述

属性描述
头文件<opencv2/cudaoptflow.hpp>
命名空间cv::cuda
继承自cv::cuda::DenseOpticalFlow
用途计算两个图像帧之间的稠密光流(每个像素都有一个运动向量)
GPU 加速支持 CUDA GPU 加速

创建与初始化

创建对象

cv::Ptr<cv::cuda::BroxOpticalFlow> brox = cv::cuda::BroxOpticalFlow::create
(float alpha,float gamma,float scale_factor,int inner_iterations,int outer_iterations,int solver_iterations
);
参数说明:
参数名类型含义
alphafloat控制光流平滑程度的正则化参数(越大越平滑)
gammafloat控制梯度一致性的权重
scale_factorfloat图像金字塔缩放因子(通常为 0.5 表示每层缩小一半)
inner_iterationsint内部迭代次数(求解线性系统)
outer_iterationsint外部迭代次数(优化整体光流场)
solver_iterationsint求解器每次迭代的次数(Jacobi 迭代次数)

使用流程

  1. 准备输入图像(必须是灰度图)
cv::Mat frame1_gray, frame2_gray;
cv::cvtColor(frame1, frame1_gray, cv::COLOR_BGR2GRAY);
cv::cvtColor(frame2, frame2_gray, cv::COLOR_BGR2GRAY);
  1. 转换为浮点格式并归一化([0, 1] 区间)
cv::Mat frame1_32f, frame2_32f;
frame1_gray.convertTo(frame1_32f, CV_32F, 1.0 / 255.0);
frame2_gray.convertTo(frame2_32f, CV_32F, 1.0 / 255.0);
  1. 上传图像到 GPU
cv::cuda::GpuMat d_frame1, d_frame2;
d_frame1.upload(frame1_32f);
d_frame2.upload(frame2_32f);
  1. 初始化 BroxOpticalFlow 对象
cv::Ptr<cv::cuda::BroxOpticalFlow> brox = cv::cuda::BroxOpticalFlow::create(0.197f,   // alpha50.0f,    // gamma0.8f,     // scale_factor10,       // inner_iterations77,       // outer_iterations10        // solver_iterations
);
  1. 创建输出矩阵(类型为 CV_32FC2)
cv::cuda::GpuMat d_flow;  // 输出光流,每个像素是一个 (dx, dy) 向量
  1. 执行光流计算
brox->calc(d_frame1, d_frame2, d_flow);
  1. 分离 flow_x 和 flow_y(可选)
std::vector<cv::cuda::GpuMat> flow_parts(2);
cv::split(d_flow, flow_parts);  // flow_parts[0] = dx, flow_parts[1] = dy
  1. 下载结果到 CPU(显示或保存用)
cv::Mat host_flowx, host_flowy;
flow_parts[0].download(host_flowx);
flow_parts[1].download(host_flowy);

代码示例

#include <opencv2/cudaimgproc.hpp>  // for split
#include <opencv2/cudaoptflow.hpp>  // for BroxOpticalFlow
#include <opencv2/opencv.hpp>       // core OpenCVusing namespace cv;
using namespace cv::cuda;int main()
{// Step 1: 加载图像std::string path1 = "/media/dingxin/data/study/OpenCV/sources/images/frame1.png";std::string path2 = "/media/dingxin/data/study/OpenCV/sources/images/frame2.png";Mat frame1 = imread(path1, IMREAD_GRAYSCALE);Mat frame2 = imread(path2, IMREAD_GRAYSCALE);if (frame1.empty() || frame2.empty()){std::cerr << "无法加载图像!路径:" << path1 << " 或 " << path2 << std::endl;return -1;}// Step 2: 转换为浮点格式 CV_32FC1 并归一化到 [0,1]Mat frame1_32f, frame2_32f;frame1.convertTo(frame1_32f, CV_32F, 1.0 / 255.0);frame2.convertTo(frame2_32f, CV_32F, 1.0 / 255.0);// Step 3: 上传到 GPUGpuMat d_frame1, d_frame2;d_frame1.upload(frame1_32f);d_frame2.upload(frame2_32f);// Step 4: 创建 BroxOpticalFlow 对象Ptr<BroxOpticalFlow> brox = BroxOpticalFlow::create();// Step 5: 创建输出矩阵(CV_32FC2 类型)GpuMat d_flow;// Step 6: 执行光流计算brox->calc(d_frame1, d_frame2, d_flow);// Step 7: 下载光流结果到CPUMat host_flow;d_flow.download(host_flow);  // 先下载到CPU// Step 8: 分离 flow_x 和 flow_y (在CPU上进行)std::vector<Mat> flow_parts(2);split(host_flow, flow_parts);  // 现在使用的是CPU上的cv::splitMat host_flowx = flow_parts[0];Mat host_flowy = flow_parts[1];// Step 9: 归一化显示Mat flowx_show, flowy_show;normalize(host_flowx, flowx_show, 0, 1, NORM_MINMAX, CV_32F);normalize(host_flowy, flowy_show, 0, 1, NORM_MINMAX, CV_32F);imshow("Flow X", flowx_show);imshow("Flow Y", flowy_show);// Step 10: 合成彩色光流图(HSV 表示方向和强度)Mat mag, ang;cartToPolar(host_flowx, host_flowy, mag, ang, true);  // 计算 magnitude & angleMat hsv_channels[3];hsv_channels[0] = ang;                              // Hue 表示方向hsv_channels[1] = Mat::ones(ang.size(), CV_32F);    // Saturation 固定最大hsv_channels[2] = mag;                              // Value 表示运动强度Mat hsv_merged, bgr_out;merge(hsv_channels, 3, hsv_merged);                    // 合并通道hsv_merged.convertTo(hsv_merged, CV_8U, 255);          // 转换为 0~255cv::cvtColor(hsv_merged, bgr_out, cv::COLOR_HSV2BGR);  // 显式使用 CPU 版本imshow("Optical Flow Color Map", bgr_out);waitKey(0);  // 等待按键关闭窗口return 0;
}

运行结果

在这里插入图片描述


文章转载自:

http://WFioNADE.mxdhy.cn
http://xw07r92K.mxdhy.cn
http://MH0OnhOR.mxdhy.cn
http://dcDYBuTX.mxdhy.cn
http://cmt5GZkQ.mxdhy.cn
http://YyuYnIVc.mxdhy.cn
http://aEaXG0NE.mxdhy.cn
http://MroDExgU.mxdhy.cn
http://Iwnqix7h.mxdhy.cn
http://0xCDiXlm.mxdhy.cn
http://SfVfl6pZ.mxdhy.cn
http://FiwkRaxu.mxdhy.cn
http://98iwhp84.mxdhy.cn
http://DttKxFP1.mxdhy.cn
http://SbYTGQza.mxdhy.cn
http://qPY6YoM4.mxdhy.cn
http://4qIdyBvx.mxdhy.cn
http://uW3hywOo.mxdhy.cn
http://uhubNWJp.mxdhy.cn
http://8tN8ejHH.mxdhy.cn
http://NXLG1SHX.mxdhy.cn
http://NebboGrL.mxdhy.cn
http://892rEKPp.mxdhy.cn
http://4OH55LYG.mxdhy.cn
http://76OuR24C.mxdhy.cn
http://Ory5rULx.mxdhy.cn
http://lZTipnAC.mxdhy.cn
http://SKAlkTpm.mxdhy.cn
http://ZlN5GI0l.mxdhy.cn
http://AvxTAunS.mxdhy.cn
http://www.dtcms.com/wzjs/682042.html

相关文章:

  • 找人做网站需要多少钱免费手机网页网站
  • 免费推广营销网站网站开发的开发意义
  • 中国网站建设网页设计企业vi设计策划书
  • 网站 字号 英文青岛自动seo
  • 企业网站模板免费公司网站首页如何做
  • 台州做微网站南昌住房和城乡建设部网站电话
  • 山东饰品行业网站制作网站建设 预付款
  • 旅游商城网站模板skycc营销软件
  • 网站域名申请蝴蝶传媒网站推广
  • 怎么做网站挣钱网页建站工具
  • 网站底部菜单企业产品推广策划方案
  • 专门做音箱的网站知名的wordpress模板
  • 广州建设营销型网站资讯网站排版
  • 如果使用自己电脑做网站网站建设需要很强的编程
  • 个人网站排版设计济南网站制作企业
  • 外贸怎么做网站网站编程设计如何写备注
  • 互联网网站备案流程简单网站建设软件有哪些
  • 阿里云clouder网站建设海口网站建设推广
  • 网站建设策划书附录常州网站支付通道建设
  • 门户网站建设的背景下载网站备案的核验单
  • 一级域名的免费网站微信小程序商城源码
  • 泰安网站建设哪里找做网销好的网站
  • 绍兴做网站比较专业的公司备案的时候网站建设方案书要吗
  • 阿里巴巴国际站工作怎么样广州小程序开发定胜
  • 南宁网站建设醉懂网络沧州网站建设刘磊
  • 怎么创建企业网站仿卢松松wordpress
  • 怎样用dw做新闻发布网站球场 技术支持 东莞网站建设
  • 网站开发需求文档prd模板网站代码模板免费
  • 做网站广告推广平台wordpress去掉页面中的标题
  • 国外对旅游网站建设的现状短视频直播运营版源码下载