Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opencv函数cvtcolor和cvtcolor之间有什么区别 我对C++编码是新的。你能告诉我opencv函数cvtcolor和cvtcolor的区别吗_C++_Opencv - Fatal编程技术网

opencv函数cvtcolor和cvtcolor之间有什么区别 我对C++编码是新的。你能告诉我opencv函数cvtcolor和cvtcolor的区别吗

opencv函数cvtcolor和cvtcolor之间有什么区别 我对C++编码是新的。你能告诉我opencv函数cvtcolor和cvtcolor的区别吗,c++,opencv,C++,Opencv,谢谢C:void cvtcolor(const-CvArr*src,CvArr*dst,int-code) C++:void cvtColor(输入数组src,输出数组dst,int代码,int-dstCn=0) 这是区别,CVCVTFLUE属于旧的弃用C API,而CV::CVTCu色卡属于当前的C++ OpenCV API。尽量使用CV命名空间,避免使用遗留代码。< P>,除了 CVTHORKEX/CODE> >是C++ API和 CVCVTFLUCT< C API。p> 如果你使用C++

谢谢

C:void cvtcolor(const-CvArr*src,CvArr*dst,int-code)

C++:void cvtColor(输入数组src,输出数组dst,int代码,int-dstCn=0)

<>这是区别,CVCVTFLUE属于旧的弃用C API,而CV::CVTCu色卡属于当前的C++ OpenCV API。尽量使用CV命名空间,避免使用遗留代码。

< P>,除了<代码> CVTHORKEX/CODE> >是C++ API和<代码> CVCVTFLUCT< <代码> C API。p>

如果你使用C++,你只需要关心,也建议使用<代码> CVTHORKEX/COD> >p> 除了

cvtColor
cvtColor
的一个简单包装器外,没有什么区别

  • cvtcolor
    是C API-已弃用
  • 代码> CVTHORKEX/CODE >是C++ API推荐的。 从OpenCV源可以看出,C API <代码> CVCVTFLUCT<代码>是围绕C++ >代码> CVTFruts的,它的实际转换如<>代码> RGB2GRYG/<代码>等

    CV_IMPL void cvCvtColor( const CvArr* srcarr, CvArr* dstarr, int code )
    {
        cv::Mat src = cv::cvarrToMat(srcarr), dst0 = cv::cvarrToMat(dstarr), dst = dst0;
        CV_Assert( src.depth() == dst.depth() );
    
        cv::cvtColor(src, dst, code, dst.channels());
        CV_Assert( dst.data == dst0.data );
    }
    

    CVTColor输入和输出参数是cvArray参考图像,也称为“IplImage”

    语法:cvtcolor(CvArr*src,CvArr*dst,int代码)

    另一方面,cvtColor使用输入阵列图像,也称为“Mat”

    语法:cvtColor(输入阵列src、输出阵列dst、int代码)

    请注意,cvArray(IplImage)是映像的参考地址,而InputArray(Mat)是实际映像

    作为一个实际测试,我用int code=CV_BGR2HSV尝试了这两种方法,令人惊讶的是,输出太不一样了,都是在相同的环境下测试的(霓虹灯白平衡)

    OpenCV 3.4.3上的CVT颜色

    cvCvtColor(inputIplImage, outputIplImage, CV_BGR2HSV);
    

    OpenCV 4.4.0上的CVT颜色

    cvtColor(inputMat, outputMat, CV_BGR2HSV);
    

    最后,您必须知道,在OpenCV 4.4.0中不再存在cvtColor,因为IplImage已被弃用,我们必须使用Mat,因此我猜您将不得不使用cvtColor或坚持使用以前的版本3.4.3