cv::calcHist()

calcHist( &hsv, 1, channels, Mat(), // do not use mask

hist, 2, histSize, ranges,

true, // the histogram is uniform

false );

为什么只有hsv前面需要加取地址符号?

这里&hsv是获取cv::Mat对象hsv的地址,然后将其作为指针数组的第一个元素。即使你只使用一个图像,你也需要传递一个指针数组,这就是为什么需要使用取址运算符&的原因。这告诉cv::calcHist()函数你将提供一个图像,且这个图像的地址是&hsv

为什么channels前面不需要取地址符号?

channels参数在cv::calcHist()函数中是一个指向整数数组的指针,这个数组定义了你希望从输入图像中抽取哪些通道来计算直方图。channels参数的值应该是一个数组,即使这个数组只包含一个元素。

channels参数已经是数组的首地址,你不需要再在其前加上&。如果加上&,你会意外地传递整个数组的地址(即数组的地址的地址),这不是函数期望的。

简而言之,channels不需要加&的原因如下:

  • 在C++中,当你将数组传递给函数时,编译器会自动将其转换为指向数组首元素的指针。
  • 因此,当你编写channels时,你实际上已经在传递一个指向整数数组首元素的指针,这就是cv::calcHist()函数所期望的。
  • 加上&会导致错误,因为你将传递数组的地址的地址,这并不是函数所需要的。
相关推荐
却道天凉_好个秋13 分钟前
OpenCV(十五):绘制矩形和圆
opencv
柳鲲鹏3 小时前
全网首发:OpenCV防抖处理后,画面数据的存储及复制到原画面
人工智能·opencv·计算机视觉
AndrewHZ9 小时前
【图像处理基石】图像匹配技术:从原理到实践,OpenCV实现与进阶方向
图像处理·人工智能·opencv·图像匹配·算法原理
B站计算机毕业设计之家12 小时前
计算机视觉:基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测识别系统(Python+PySide6界面+训练代码)(源码+文档)✅
人工智能·深度学习·opencv·yolo·计算机视觉·零售·1024程序员节
B站计算机毕业设计之家1 天前
计算机视觉:pyqt5+yoloV5目标检测平台 python实战 torch 目标识别 大数据项目 目标跟踪(建议收藏)✅
深度学习·qt·opencv·yolo·目标检测·计算机视觉·1024程序员节
嵌入式-老费1 天前
Easyx图形库应用(和opencv协同)
人工智能·opencv·计算机视觉
AndrewHZ1 天前
【图像处理基石】图像滤镜的算法原理:从基础到进阶的技术解析
图像处理·python·opencv·算法·计算机视觉·滤镜·cv
獨枭1 天前
Visual Studio 编译带显卡加速的 OpenCV
ide·opencv·visual studio
房开民2 天前
OpenCV C++ 中,访问图像像素三种常用方法
c++·opencv·计算机视觉
学技术的大胜嗷2 天前
图像归一化:OpenCV 高效映射 [0,255] → [-1,1] 性能实测
图像处理·opencv·计算机视觉