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()函数所期望的。
  • 加上&会导致错误,因为你将传递数组的地址的地址,这并不是函数所需要的。
相关推荐
不吃香菜?1 小时前
Opencv之dilib库:表情识别
人工智能·opencv·计算机视觉
郝YH是人间理想1 小时前
OpenCV基础——傅里叶变换、角点检测
开发语言·图像处理·人工智能·python·opencv·计算机视觉
白熊1882 小时前
【计算机视觉】OpenCV实战项目- 抖音动态小表情
人工智能·opencv·计算机视觉
jndingxin3 小时前
OpenCV 图形API(14)用于执行矩阵(或图像)与一个标量值的逐元素乘法操作函数mulC()
人工智能·opencv
jndingxin3 小时前
OpenCV 图形API(8)用于执行两个矩阵(或图像)之间的逐元素除法操作函数div()
opencv
weixin_442424034 小时前
Opencv计算机视觉编程攻略-第九节 描述和匹配兴趣点
人工智能·opencv·计算机视觉
jndingxin5 小时前
OpenCV 图形API(16)将极坐标(magnitude 和 angle)转换为笛卡尔坐标(x 和 y)函数polarToCart()
人工智能·opencv·计算机视觉
jndingxin6 小时前
OpenCV 图形API(15)计算两个矩阵(通常代表二维向量的X和Y分量)每个对应元素之间的相位角(即角度)函数phase()
人工智能·opencv
jndingxin1 天前
OpenCV 图形API(11)对图像进行掩码操作的函数mask()
人工智能·opencv·计算机视觉
阳光_你好1 天前
请详细说明opencv/c++对图片缩放
c++·opencv·计算机视觉