在这个OpenCV库中如何使用联合
How is the union used in this OpenCV library?
我正忙于学习OpenCV,但有一部分我不明白。这可能是一个容易回答的问题,但我仍然被困住了,感谢您的回答。在OpenCV中,矩阵实现如下:
typedef struct CvMat {
int type;
int step;
int* refcount;
union {
uchar* ptr;
short* s;
int* i;
float* fl;
double* db;
} data;
union {
int rows;
int height;
};
union {
int cols;
int width;
};
} CvMat;
据我了解,联合意味着 int rows
和 int height
,例如,共享相同的内存位置。如果是这样,我希望行和高度始终具有相同的值。这意味着我们只能有方形矩阵,我认为OpenCV中并非如此。那么,即使它是并集,我们怎么能有两个不同的行和高度值呢?有人可以启发我这个结构是如何工作的吗?
谢谢!
在这里,rows
的意思是"行数",本质上与height
相同。 同样,cols
的意思是"列数",只是width
的别名。它们在其他上下文中不一定是别名,但就 OpenCV 而言,它们被视为别名。
这可能是出于向后兼容性的原因,因为官方网站只列出了rows
和cols
。 此外,请注意:
CvMat
现已过时;请考虑改用Mat
。
对我来说
非常有意义。您有一个用于 rows
/height
的union
和一个用于 cols
/width
的。因此,您可以选择是喜欢将水平维度称为列还是宽度。单独的union
不共享相同的内存,只有一个union
内的"成员"。
相关文章:
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 使用OpenCV和覆盆子上的多个网络摄像头拍摄延时摄影,出现多个V4L错误
- 如何使用OpenCV-C++编写*.mp4视频?
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 在虚拟机上使用 OpenCV 重新构建C++程序
- 无法使用 OpenCv 3.4.5 从具有C++ dll 的网络摄像机 (rtsp) 中抓取帧
- 如何使用opencv和Qt拍摄部分桌面的照片
- 在C++中使用OpenCV矩阵中的特征将图像旋转90度
- 使用 OpenCV readNetFromTensorFlow 运行 Keras DNN 模型 (UNet):错误:操作
- 如何使用 opencv 绘制绿色矩形?
- 使用 Opencv 将姿势值实时写入文本文件
- 如果函数使用 OPENCV Mat 作为输入,如何编写头文件?
- 使用opencv的C++图像检测
- 在头文件中使用opencv类型来实现未定义的标识符
- 如何使用OpenCV同时显示"深度"和"颜色"视频图像
- 使用OpenCV计数硬币
- 使用opencv在GPU上调整图像大小会产生空的输出矩阵
- 如何在使用OpenCV C++应用K均值后提取分割图像
- 帧提取 使用OpenCV的视频文件开头只有几秒钟