opencv函数cvtcolor和cvtcolor之间有什么区别 我对C++编码是新的。你能告诉我opencv函数cvtcolor和cvtcolor的区别吗
谢谢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>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++,你只需要关心,也建议使用<代码> CVTHORKEX/COD> >p> 除了
cvtColor
是cvtColor
的一个简单包装器外,没有什么区别
cvtcolor
是C API-已弃用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