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()函数所期望的。
  • 加上&会导致错误,因为你将传递数组的地址的地址,这并不是函数所需要的。
相关推荐
Hong_Youth14 小时前
OpenCV + YOLOv5 落地工程:视频实时计数、追踪、画线统计
opencv·yolo·音视频
sali-tec14 小时前
C# 基于OpenCv的视觉工作流-章45-圆卡尺
图像处理·人工智能·opencv·算法·计算机视觉
YOULANSHENGMENG16 小时前
opencv 的霍夫变化的直线检测
opencv
Daydream.V17 小时前
OpenCV——人脸识别
人工智能·opencv·计算机视觉·人脸识别·人脸识别的三种算法·附代码实现
我材不敲代码18 小时前
OpenCV 实现人脸识别全流程:从人脸检测到 LBPH/Eigen/Fisher 三种算法实战
人工智能·opencv·计算机视觉
Westward-sun.1 天前
基于 OpenCV DNN 模块实现图像风格迁移
人工智能·神经网络·opencv·计算机视觉·dnn
yongui478341 天前
MATLAB小波变换图像融合
opencv·计算机视觉·matlab
Fleshy数模2 天前
基于OpenCV实现人脸与微笑检测:从入门到实战
人工智能·opencv·计算机视觉
我材不敲代码2 天前
OpenCV 实战——Python 实现图片人脸检测 + 视频人脸微笑检测
人工智能·python·opencv
纤纡.2 天前
从单图风格迁移到实时视频四宫格滤镜:OpenCV DNN 实战全解析
人工智能·opencv·dnn