簡體   English   中英

如何在C ++中找出OpenCV .at函數的用途?

[英]How to find out what type to use for OpenCV .at function in C++?

是否有一種簡單可靠的方法來找出我應該為給定CV類型的Mat使用.at函數的等效類型?

例如,我怎么能告訴空白應該用ushortfloatVec3b

Mat mat1(1, 2, CV_16UC1, 12345);
std::cout << mat1.at<___>(0, 1) << "\n";
Mat mat2(1, 2, CV_32FC1, 67.89);
std::cout << mat2.at<___>(0, 1) << "\n";
Mat mat3(1, 2, CV_8UC3, Scalar(65, 66, 67));
std::cout << mat3.at<___>(0, 1)[2] << "\n";

使用來自的數據

我構建了下表:

        C1      C2     C3     C4     C6 (not sure whether C6 subtype exists as a macro)
CV_8U   uchar   Vec2b  Vec3b  Vec4b
CV_8S   char    -       
CV_16U  ushort  -
CV_16S  short   Vec2s  Vec3s  Vec4s
CV_32S  int     Vec2i  Vec3i  Vec4i
CV_32F  float   Vec2f  Vec3f  Vec4f  Vec6f
CV_64F  double  Vec2d  Vec3d  Vec4d  Vec6d

使用uchar == unsigned charushort == unsigned short

對於缺少類型,您可以創建自己的typedef,如果您想:

typedef Vec<ushort, 2> Vec2us;

或者您只是使用相同大小的類型( Vec2s )訪問它並在之后轉換它

但最后我認為理解格式的含義(32位浮點數,3個通道=每個矩陣元素3個浮點值),如果比查看表格要好得多......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM