c++ -可以使用一点解释Vec3b在OpenCV

C++ - Could use a little explanation of Vec3b in OpenCV

本文关键字:解释 一点 Vec3b OpenCV 可以使 c++      更新时间:2023-10-16

我在转换成另一种语言的代码中遇到了这种'Vec3b green(0,255,0), blue(255,0,0);'。我是c++ OpenCV的新手,想知道它在文档中的位置,我到处搜索,找不到它。我还搜索了整个OpenCV目录,发现这是最接近它的定义

' typepedef Vec3b RGB;'

在/home/w/documents/opencv-master/modules/imgproc/test/test_cvtyuv.cpp文件

我为RGB grepped,也找不到一个定义,虽然有很多输出,我可能错过了一些东西。我正在编写一个C包装器,因为这就是为什么我需要知道,到目前为止,我有这个来包装上面的'Vec3b green(0,255,0)':

 Vec3b cv_create_Vec3b(const char* color, int val1, int val2, int val3) {
     return new Vec3b color (val1, val2, val3);
 }

但是得到这个错误:

 opencv_generated.cpp:8:22: error: expected ‘;’ before ‘color’
      return new Vec3b color (val1, val2, val3);
                  ^
opencv_generated.cpp:8:45: error: ‘color’ cannot be used as a function
     return new Vec3b color (val1, val2, val3);

首先,我可以使用帮助,找出如何输入"color"。它只需要一个变量,无论它运行时输入什么,它都是"绿色"或"蓝色"的(对c++来说是新的)。第二,如果有人能给我指出或告诉我关于它的信息,或者给我一个声明,这样我就有足够的信息来写我的包装,我会很感激的。

谢谢^

我在另一篇S.O.帖子中找到了如何做到这一点。请参阅评论

这里https://stackoverflow.com/questions/22311634/c-help-writing-function-parameters-for-c-wrappers-for-c

Vec3b* cv_create_Vec3b(int val1, int val2, int val3) {
   return new Vec3b (val1, val2, val3);
}

Vec3b是一个类型(对我来说看起来像一个颜色值),"green"answers"blue"是变量名。你不能在字符串中存储变量名(很明显),因此你不能有一个函数来生成这些值。而且,你的函数在语法上是错误的。虽然我不明白你如何为一个c++项目写一个c包装器(如果它的一部分是用c++写的,你需要一个c++编译器,那么有什么意义呢?),我绝对建议你在尝试用它做任何事情之前先学习c++。语法的可能性太大了,不能在阅读代码时自己学习。

编辑:也许可以试试这样的东西?
Vec3b Green() {
    Vec3b result(0, 255, 0);
    return result;
}