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

教做甜品网站源码网站建设教程

教做甜品网站,源码网站建设教程,昆明网站建设平台,网站icon怎么做的为什么很多接口用 CV_32F数值范围更大浮点数可以表示很大或很小的值(3.4e38),不会像 CV_8U 那样溢出。避免整数除法的精度损失例如归一化、比例缩放、加权计算等,如果用 CV_8U 会截断到整数。算法公式本身需要浮点运算卷积、傅里叶…

为什么很多接口用 CV_32F

  1. 数值范围更大

    • 浮点数可以表示很大或很小的值(±3.4e38),不会像 CV_8U 那样溢出。

  2. 避免整数除法的精度损失

    • 例如归一化、比例缩放、加权计算等,如果用 CV_8U 会截断到整数。

  3. 算法公式本身需要浮点运算

    • 卷积、傅里叶变换、矩阵求逆、特征匹配等都需要小数精度。

  4. 通用性好

    • 一个函数如果内部支持 float,就能同时处理整数和浮点数据(整数可以先 convertTo)。

📌 常见只支持或建议用 CV_32F 的 OpenCV 接口

模块 / 函数说明
cv::normalize(归一化)建议 32F 避免精度损失
cv::matchTemplate(模板匹配)CV_TM_CCOEFF_NORMED 等模式必须 32F
cv::phaseCorrelate相位相关匹配,需要浮点
cv::warpPerspective / cv::warpAffine变换矩阵通常是 CV_32F
cv::cornerHarris / cv::cornerEigenValsAndVecs角点检测要求 32F
cv::filter2D(部分核类型)如果核是浮点,会强制转 32F
cv::gemm / cv::invert / cv::solve矩阵运算要求 32F 或 64F
cv::dft / cv::idft傅里叶变换建议 32F/64F

 📊 OpenCV 常用统计 / 数学函数与类型支持表

 

函数必须 CV_32F 吗?支持的类型备注
cv::minMaxLocCV_8U, CV_8S, CV_16U, CV_16S, CV_32S, CV_32F, CV_64F可直接用于整数或浮点
cv::mean / cv::meanStdDev同上会返回浮点结果
cv::sum同上结果是 cv::Scalar(double)
cv::countNonZeroCV_8U, CV_8S, CV_16U, CV_16S, CV_32S, CV_32F, CV_64F非零元素计数
cv::normalize⚠️ 建议支持多种,但内部若要归一化到浮点区间需 32F避免整数除法精度损失
cv::matchTemplateCV_TM_CCOEFF_NORMED 等)✅ 必须CV_32F不匹配类型会自动转,手动转更可控
cv::phaseCorrelate✅ 必须CV_32F / CV_64F相位相关必须浮点
cv::dft / cv::idft✅ 必须CV_32F / CV_64F频域运算必须浮点
cv::magnitude / cv::phase✅ 必须CV_32F / CV_64F需要浮点精度
cv::cornerHarris / cv::cornerEigenValsAndVecs✅ 必须CV_32F角点计算用浮点矩阵
cv::calcHistCV_8U / CV_32F灰度和浮点都行
cv::LUT输入支持多种类型查表操作
cv::integral⚠️ 建议输出通常用 CV_32SCV_64F累积分布可能溢出
cv::filter2D多种类型如果卷积核是浮点,会内部转 32F

 

3️⃣ 16U / 8U / 32F 找最大点的结果与速度比较

📌 结果方面:

  • 如果数据本质相同(只是存储类型不同,没有经过截断/归一化),那么 最大值位置(maxLoc)是一致的

  • 最大值的数值会因为类型不同而显示不同:

    • 8U 范围是 [0,255]

    • 16U 范围是 [0,65535]

    • 32F 范围是浮点,可以是任意数(比如 0.0~1.0)

📌 性能方面:

  • 8U 通常比 32F 快,尤其是对大矩阵做简单遍历(比如 minMaxLocabsdiff、逐像素比较),因为:

    • 每个像素只占 1 字节,内存带宽消耗更小

    • SIMD 指令可以一次处理更多数据(例如 SSE2 一次可以处理 16 个 8U,但只能处理 4 个 32F)

  • 16U 稍慢于 8U,但仍可能快于 32F

  • 32F 占 4 字节,内存访问量大,且浮点运算有额外开销

 📌举例

256×256 这种尺寸其实很小,在现代 CPU 上,8U、16U、32F 的速度差几乎可以忽略,尤其是像 cv::sum / cv::minMaxLoc 这种一次性遍历型操作。

  • 数据量小
    256×256 = 65,536 个像素

    • 8U:65 KB

    • 16U:131 KB

    • 32F:262 KB
      这些数据量在 CPU L2/L3 缓存里轻松放得下,不会遇到内存带宽瓶颈。

  • 循环开销占比高
    对这么少的数据,函数调用和循环调度本身的时间占很大比例,数据类型的运算速度差异就被稀释掉了。

  • SIMD 都能一次性吞下整批数据
    比如 AVX2 可以一次处理:

    • 8U:32 个元素

    • 16U:16 个元素

    • 32F:8 个元素
      但在这么小的数据量里,这个差别不会放大到能明显看出来。

⏱ 大致耗时(单线程,现代 CPU 估算)

cv::sum / cv::minMaxLoc 为例:

类型预计耗时(256×256)
8U0.51 微秒
16U0.51.1 微秒
32F0.61.3 微秒

📌 什么时候差距才会明显?

  • 分辨率 ≥ 4K(8 百万像素)

  • 高频调用(每秒几千~几万次)

  • 大规模批处理(几十万张)

这种时候 8U / 16U 可能会比 32F 快 2~4 倍,因为:

  • 数据占用更小,内存带宽利用率更高

  • SIMD 并行处理效率差距能完全发挥

http://www.dtcms.com/a/594804.html

相关文章:

  • 大型门户网站有哪些企业网站建设存在的问题
  • wordpress微信拦截青岛关键词优化排名
  • 电源模块冲击电流测试如何测试,需要哪些设备?-纳米软件
  • 广告网站建设制作设计c2c的网站
  • 【MicroPython编程-ESP32篇】-BME680传感器驱动
  • 电脑上制作网站的软件手机端网站建设教程视频教程
  • 网站qq代码做电商网站用什么语言
  • Docker容器的一次迁移
  • Android Studio移动应用基础教程(前言)
  • 莱芜网站建设流程网站备案号没有-1
  • 哪些网站收录排名好建立网站的申请
  • 建设银行网站登录不了目前较流行的网站开发框架
  • 创建web项目踩坑记录
  • 自己服务器做网站服务器备案1个人做多网站负责人
  • 燃烧100克脂肪换算多少卡路里?
  • idea做网站贵州省住房和城乡建设网站
  • 网站建设前期应该做哪些准备wordpress 多媒体 权限
  • 网站开发word文档安卓手机app制作
  • 【论文研读】NASA-TLX(任务负荷指数)研发报告总结
  • 搭建个网站多少钱有需要网站建设网站推广请找我
  • 中山网站建设推广有创意做网站找投资
  • ps软件网站有哪些功能建设部网站官工程质量手册
  • 关于vue3
  • ESD(Electrostatic Discharge,静电放电)
  • 做网站视频图片加载不出来游戏网页设计教程
  • 网站建设项目验收意见wordpress更改图标
  • 做网站还需要服务器吗做网站前需要做哪些事情
  • 重庆快速排名保定关键词优化平台
  • 黄页网站介绍外包网站开发
  • 网站开发设计需求重庆装修全包价多少钱一平方