做类似淘宝的网站前景,网站代码下载,用dw做静态网站的步骤,品牌网站建设解决方怎么运行/opencv/modules/imgproc/test下的test_cvtyuv.cpp 要运行test_cvtyuv.cpp#xff0c;你需要按照以下步骤操作#xff1a; 获取OpenCV源代码#xff0c;编译并安装opencv#xff1a;首先#xff0c;确保你已经下载并安装了OpenCV。如果没有#xff0c;请前往Open… 怎么运行/opencv/modules/imgproc/test下的test_cvtyuv.cpp 要运行test_cvtyuv.cpp你需要按照以下步骤操作 获取OpenCV源代码编译并安装opencv首先确保你已经下载并安装了OpenCV。如果没有请前往OpenCV官方网站下载源代码。安装参考连接https://blog.csdn.net/shizuguilai/article/details/136406722 运行测试在构建build目录中你可以运行测试程序。使用以下命令 ./bin/opencv_test_imgproc --gtest_filtercvtyuv.*
# 或者是下面这样
./bin/opencv_test_imgproc --gtest_filter*ColorYUV* # 运行特定的颜色转换测试
# 或者试试下面这个注意下面是gtestp不是gtest
./bin/opencv_test_imgproc --gtestp_filterImgproc_ColorYUV.accuracy这将运行与cvtyuv相关的所有测试用例。因为test_cvtyuv.cpp本身并不包含主函数main因为它是设计来被 OpenCV 的测试框架自动发现和执行的。测试框架基于 Google Test会自动识别 TEST_P 宏定义的测试用例并执行它们。
请注意确保你的构建环境已经正确设置以便能够编译和运行OpenCV。如果你遇到问题可以查看OpenCV官方文档或在社区寻求帮助。
祝你好运
test_cvtyuv.cpp源码如下
#include test_precomp.hppnamespace opencv_test { namespace {#undef RGB
#undef YUVtypedef Vec3b YUV;
typedef Vec3b RGB;int countOfDifferencies(const Mat gold, const Mat result, int maxAllowedDifference 1)
{Mat diff;absdiff(gold, result, diff);return countNonZero(diff.reshape(1) maxAllowedDifference);
}class YUVreader
{
public:virtual ~YUVreader() {}virtual YUV read(const Mat yuv, int row, int col) 0;virtual int channels() 0;virtual Size size(Size imgSize) 0;virtual bool requiresEvenHeight() { return true; }virtual bool requiresEvenWidth() { return true; }static YUVreader* getReader(int code);
};class RGBreader
{
public:virtual ~RGBreader() {}virtual RGB read(const Mat rgb, int row, int col) 0;virtual int channels() 0;static RGBreader* getReader(int code);
};class RGBwriter
{
public:virtual ~RGBwriter() {}virtual void write(Mat rgb, int row, int col, const RGB val) 0;virtual int channels() 0;static RGBwriter* getWriter(int code);
};class GRAYwriter
{
public:virtual ~GRAYwriter() {}virtual void write(Mat gray, int row, int col, const uchar val){gray.atuchar(row, col) val;}virtual int channels() { return 1; }static GRAYwriter* getWriter(int code);
};class YUVwriter
{
public:virtual ~YUVwriter() {}virtual void write(Mat yuv, int row, int col, const YUV val) 0;virtual int channels() 0;virtual Size size(Size imgSize) 0;virtual bool requiresEvenHeight() { return true; }virtual bool requiresEvenWidth() { return true; }static YUVwriter* getWriter(int code);
};class RGB888Writer : public RGBwriter
{void write(Mat rgb, int row, int col, const RGB val){rgb.atVec3b(row, col) val;}int channels() { return 3; }
};class BGR888Writer : public RGBwriter
{void write(Mat rgb, int row, int col, const RGB val){Vec3b tmp(val[2], val[1], val[0]);rgb.atVec3b(row, col) tmp;}int channels() { return 3; }
};class RGBA8888Writer : public RGBwriter
{void write(Mat rgb, int row, int col, const RGB val){Vec4b tmp(val[0], val[1], val[2], 255);rgb.atVec4b(row, col) tmp;}int channels() { return 4; }
};class BGRA8888Writer : public RGBwriter
{void write(Mat rgb, int row, int col, const RGB val){Vec4b tmp(val[2], val[1], val[0], 255);rgb.atVec4b(row, col) tmp;}int channels() { return 4; }
};class YUV420pWriter: public YUVwriter
{int channels() { return 1; }Size size(Size imgSize) { return Size(imgSize.width, imgSize.height imgSize.height/2); }
};class YV12Writer: public YUV420pWriter
{void write(Mat yuv, int row, int col, const YUV val){int h yuv.rows * 2 / 3;yuv.ptruchar(row)[col] val[0];if( row % 2 0 col % 2 0 ){yuv.ptruchar(h row/4)[col/2 ((row/2) % 2) * (yuv.cols/2)] val[2];yuv.ptruchar(h (row/2 h/2)/2)[col/2 ((row/2 h/2) % 2) * (yuv.cols/2)] val[1];}}
};class I420Writer: public YUV420pWriter
{void write(Mat yuv, int row, int col, const YUV val){int h yuv.rows * 2 / 3;yuv.ptruchar(row)[col] val[0];if( row % 2 0 col % 2 0 ){yuv.ptruchar(h row/4)[col/2 ((row/2) % 2) * (yuv.cols/2)] val[1];yuv.ptruchar(h (row/2 h/2)/2)[col/2 ((row/2 h/2) % 2) * (yuv.cols/2)] val[2];}}
};class YUV420Reader: public YUVreader
{int channels() { return 1; }Size size(Size imgSize) { return Size(imgSize.width, imgSize.height * 3 / 2); }
};class YUV422Reader: public YUVreader
{int channels() { return 2; }Size size(Size imgSize) { return imgSize; }bool requiresEvenHeight() { return false; }
};class NV21Reader: public YUV420Reader
{YUV read(const Mat yuv, int row, int col){uchar y yuv.ptruchar(row)[col];uchar u yuv.ptruchar(yuv.rows * 2 / 3 row/2)[(col/2)*2 1];uchar v yuv.ptruchar(yuv.rows * 2 / 3 row/2)[(col/2)*2];return YUV(y, u, v);}
};struct NV12Reader: public YUV420Reader
{YUV read(const Mat yuv, int row, int col){uchar y yuv.ptruchar(row)[col];uchar u yuv.ptruchar(yuv.rows * 2 / 3 row/2)[(col/2)*2];uchar v yuv.ptruchar(yuv.rows * 2 / 3 row/2)[(col/2)*2 1];return YUV(y, u, v);}
};class YV12Reader: public YUV420Reader
{YUV read(const Mat yuv, int row, int col){int h yuv.rows * 2 / 3;uchar y yuv.ptruchar(row)[col];uchar u yuv.ptruchar(h (row/2 h/2)/2)[col/2 ((row/2 h/2) % 2) * (yuv.cols/2)];uchar v yuv.ptruchar(h row/4)[col/2 ((row/2) % 2) * (yuv.cols/2)];return YUV(y, u, v);}
};class IYUVReader: public YUV420Reader
{YUV read(const Mat yuv, int row, int col){int h yuv.rows * 2 / 3;uchar y yuv.ptruchar(row)[col];uchar u yuv.ptruchar(h row/4)[col/2 ((row/2) % 2) * (yuv.cols/2)];uchar v yuv.ptruchar(h (row/2 h/2)/2)[col/2 ((row/2 h/2) % 2) * (yuv.cols/2)];return YUV(y, u, v);}
};class UYVYReader: public YUV422Reader
{YUV read(const Mat yuv, int row, int col){uchar y yuv.ptrVec2b(row)[col][1];uchar u yuv.ptrVec2b(row)[(col/2)*2][0];uchar v yuv.ptrVec2b(row)[(col/2)*2 1][0];return YUV(y, u, v);}
};class YUY2Reader: public YUV422Reader
{YUV read(const Mat yuv, int row, int col){uchar y yuv.ptrVec2b(row)[col][0];uchar u yuv.ptrVec2b(row)[(col/2)*2][1];uchar v yuv.ptrVec2b(row)[(col/2)*2 1][1];return YUV(y, u, v);}
};class YVYUReader: public YUV422Reader
{YUV read(const Mat yuv, int row, int col){uchar y yuv.ptrVec2b(row)[col][0];uchar u yuv.ptrVec2b(row)[(col/2)*2 1][1];uchar v yuv.ptrVec2b(row)[(col/2)*2][1];return YUV(y, u, v);}
};class YUV888Reader : public YUVreader
{YUV read(const Mat yuv, int row, int col){return yuv.atYUV(row, col);}int channels() { return 3; }Size size(Size imgSize) { return imgSize; }bool requiresEvenHeight() { return false; }bool requiresEvenWidth() { return false; }
};class RGB888Reader : public RGBreader
{RGB read(const Mat rgb, int row, int col){return rgb.atRGB(row, col);}int channels() { return 3; }
};class BGR888Reader : public RGBreader
{RGB read(const Mat rgb, int row, int col){RGB tmp rgb.atRGB(row, col);return RGB(tmp[2], tmp[1], tmp[0]);}int channels() { return 3; }
};class RGBA8888Reader : public RGBreader
{RGB read(const Mat rgb, int row, int col){Vec4b rgba rgb.atVec4b(row, col);return RGB(rgba[0], rgba[1], rgba[2]);}int channels() { return 4; }
};class BGRA8888Reader : public RGBreader
{RGB read(const Mat rgb, int row, int col){Vec4b rgba rgb.atVec4b(row, col);return RGB(rgba[2], rgba[1], rgba[0]);}int channels() { return 4; }
};class YUV2RGB_Converter
{
public:RGB convert(YUV yuv){int y std::max(0, yuv[0] - 16);int u yuv[1] - 128;int v yuv[2] - 128;uchar r saturate_castuchar(1.164f * y 1.596f * v);uchar g saturate_castuchar(1.164f * y - 0.813f * v - 0.391f * u);uchar b saturate_castuchar(1.164f * y 2.018f * u);return RGB(r, g, b);}
};class YUV2GRAY_Converter
{
public:uchar convert(YUV yuv){return yuv[0];}
};class RGB2YUV_Converter
{
public:YUV convert(RGB rgb){int r rgb[0];int g rgb[1];int b rgb[2];uchar y saturate_castuchar((int)( 0.257f*r 0.504f*g 0.098f*b 0.5f) 16);uchar u saturate_castuchar((int)(-0.148f*r - 0.291f*g 0.439f*b 0.5f) 128);uchar v saturate_castuchar((int)( 0.439f*r - 0.368f*g - 0.071f*b 0.5f) 128);return YUV(y, u, v);}
};YUVreader* YUVreader::getReader(int code)
{switch(code){case COLOR_YUV2RGB_NV12:case COLOR_YUV2BGR_NV12:case COLOR_YUV2RGBA_NV12:case COLOR_YUV2BGRA_NV12:return new NV12Reader();case COLOR_YUV2RGB_NV21:case COLOR_YUV2BGR_NV21:case COLOR_YUV2RGBA_NV21:case COLOR_YUV2BGRA_NV21:return new NV21Reader();case COLOR_YUV2RGB_YV12:case COLOR_YUV2BGR_YV12:case COLOR_YUV2RGBA_YV12:case COLOR_YUV2BGRA_YV12:return new YV12Reader();case COLOR_YUV2RGB_IYUV:case COLOR_YUV2BGR_IYUV:case COLOR_YUV2RGBA_IYUV:case COLOR_YUV2BGRA_IYUV:return new IYUVReader();case COLOR_YUV2RGB_UYVY:case COLOR_YUV2BGR_UYVY:case COLOR_YUV2RGBA_UYVY:case COLOR_YUV2BGRA_UYVY:return new UYVYReader();//case COLOR_YUV2RGB_VYUY 109,//case COLOR_YUV2BGR_VYUY 110,//case COLOR_YUV2RGBA_VYUY 113,//case COLOR_YUV2BGRA_VYUY 114,// return ??case COLOR_YUV2RGB_YUY2:case COLOR_YUV2BGR_YUY2:case COLOR_YUV2RGBA_YUY2:case COLOR_YUV2BGRA_YUY2:return new YUY2Reader();case COLOR_YUV2RGB_YVYU:case COLOR_YUV2BGR_YVYU:case COLOR_YUV2RGBA_YVYU:case COLOR_YUV2BGRA_YVYU:return new YVYUReader();case COLOR_YUV2GRAY_420:return new NV21Reader();case COLOR_YUV2GRAY_UYVY:return new UYVYReader();case COLOR_YUV2GRAY_YUY2:return new YUY2Reader();case COLOR_YUV2BGR:case COLOR_YUV2RGB:return new YUV888Reader();default:return 0;}
}RGBreader* RGBreader::getReader(int code)
{switch(code){case COLOR_RGB2YUV_YV12:case COLOR_RGB2YUV_I420:return new RGB888Reader();case COLOR_BGR2YUV_YV12:case COLOR_BGR2YUV_I420:return new BGR888Reader();case COLOR_RGBA2YUV_I420:case COLOR_RGBA2YUV_YV12:return new RGBA8888Reader();case COLOR_BGRA2YUV_YV12:case COLOR_BGRA2YUV_I420:return new BGRA8888Reader();default:return 0;};
}RGBwriter* RGBwriter::getWriter(int code)
{switch(code){case COLOR_YUV2RGB_NV12:case COLOR_YUV2RGB_NV21:case COLOR_YUV2RGB_YV12:case COLOR_YUV2RGB_IYUV:case COLOR_YUV2RGB_UYVY://case COLOR_YUV2RGB_VYUY:case COLOR_YUV2RGB_YUY2:case COLOR_YUV2RGB_YVYU:case COLOR_YUV2RGB:return new RGB888Writer();case COLOR_YUV2BGR_NV12:case COLOR_YUV2BGR_NV21:case COLOR_YUV2BGR_YV12:case COLOR_YUV2BGR_IYUV:case COLOR_YUV2BGR_UYVY://case COLOR_YUV2BGR_VYUY:case COLOR_YUV2BGR_YUY2:case COLOR_YUV2BGR_YVYU:case COLOR_YUV2BGR:return new BGR888Writer();case COLOR_YUV2RGBA_NV12:case COLOR_YUV2RGBA_NV21:case COLOR_YUV2RGBA_YV12:case COLOR_YUV2RGBA_IYUV:case COLOR_YUV2RGBA_UYVY://case COLOR_YUV2RGBA_VYUY:case COLOR_YUV2RGBA_YUY2:case COLOR_YUV2RGBA_YVYU:return new RGBA8888Writer();case COLOR_YUV2BGRA_NV12:case COLOR_YUV2BGRA_NV21:case COLOR_YUV2BGRA_YV12:case COLOR_YUV2BGRA_IYUV:case COLOR_YUV2BGRA_UYVY://case COLOR_YUV2BGRA_VYUY:case COLOR_YUV2BGRA_YUY2:case COLOR_YUV2BGRA_YVYU:return new BGRA8888Writer();default:return 0;};
}GRAYwriter* GRAYwriter::getWriter(int code)
{switch(code){case COLOR_YUV2GRAY_420:case COLOR_YUV2GRAY_UYVY:case COLOR_YUV2GRAY_YUY2:return new GRAYwriter();default:return 0;}
}YUVwriter* YUVwriter::getWriter(int code)
{switch(code){case COLOR_RGB2YUV_YV12:case COLOR_BGR2YUV_YV12:case COLOR_RGBA2YUV_YV12:case COLOR_BGRA2YUV_YV12:return new YV12Writer();case COLOR_RGB2YUV_I420:case COLOR_BGR2YUV_I420:case COLOR_RGBA2YUV_I420:case COLOR_BGRA2YUV_I420:return new I420Writer();default:return 0;};
}templateclass convertor
void referenceYUV2RGB(const Mat yuv, Mat rgb, YUVreader* yuvReader, RGBwriter* rgbWriter)
{convertor cvt;for(int row 0; row rgb.rows; row)for(int col 0; col rgb.cols; col)rgbWriter-write(rgb, row, col, cvt.convert(yuvReader-read(yuv, row, col)));
}templateclass convertor
void referenceYUV2GRAY(const Mat yuv, Mat rgb, YUVreader* yuvReader, GRAYwriter* grayWriter)
{convertor cvt;for(int row 0; row rgb.rows; row)for(int col 0; col rgb.cols; col)grayWriter-write(rgb, row, col, cvt.convert(yuvReader-read(yuv, row, col)));
}templateclass convertor
void referenceRGB2YUV(const Mat rgb, Mat yuv, RGBreader* rgbReader, YUVwriter* yuvWriter)
{convertor cvt;for(int row 0; row rgb.rows; row)for(int col 0; col rgb.cols; col)yuvWriter-write(yuv, row, col, cvt.convert(rgbReader-read(rgb, row, col)));
}struct ConversionYUV
{explicit ConversionYUV( const int code ){yuvReader_ YUVreader :: getReader(code);yuvWriter_ YUVwriter :: getWriter(code);rgbReader_ RGBreader :: getReader(code);rgbWriter_ RGBwriter :: getWriter(code);grayWriter_ GRAYwriter:: getWriter(code);}~ConversionYUV(){if (yuvReader_)delete yuvReader_;if (yuvWriter_)delete yuvWriter_;if (rgbReader_)delete rgbReader_;if (rgbWriter_)delete rgbWriter_;if (grayWriter_)delete grayWriter_;}int getDcn(){return (rgbWriter_ ! 0) ? rgbWriter_-channels() : ((grayWriter_ ! 0) ? grayWriter_-channels() : yuvWriter_-channels());}int getScn(){return (yuvReader_ ! 0) ? yuvReader_-channels() : rgbReader_-channels();}Size getSrcSize( const Size imgSize ){return (yuvReader_ ! 0) ? yuvReader_-size(imgSize) : imgSize;}Size getDstSize( const Size imgSize ){return (yuvWriter_ ! 0) ? yuvWriter_-size(imgSize) : imgSize;}bool requiresEvenHeight(){return (yuvReader_ ! 0) ? yuvReader_-requiresEvenHeight() : ((yuvWriter_ ! 0) ? yuvWriter_-requiresEvenHeight() : false);}bool requiresEvenWidth(){return (yuvReader_ ! 0) ? yuvReader_-requiresEvenWidth() : ((yuvWriter_ ! 0) ? yuvWriter_-requiresEvenWidth() : false);}YUVreader* yuvReader_;YUVwriter* yuvWriter_;RGBreader* rgbReader_;RGBwriter* rgbWriter_;GRAYwriter* grayWriter_;
};CV_ENUM(YUVCVTS, COLOR_YUV2RGB_NV12, COLOR_YUV2BGR_NV12, COLOR_YUV2RGB_NV21, COLOR_YUV2BGR_NV21,COLOR_YUV2RGBA_NV12, COLOR_YUV2BGRA_NV12, COLOR_YUV2RGBA_NV21, COLOR_YUV2BGRA_NV21,COLOR_YUV2RGB_YV12, COLOR_YUV2BGR_YV12, COLOR_YUV2RGB_IYUV, COLOR_YUV2BGR_IYUV,COLOR_YUV2RGBA_YV12, COLOR_YUV2BGRA_YV12, COLOR_YUV2RGBA_IYUV, COLOR_YUV2BGRA_IYUV,COLOR_YUV2RGB_UYVY, COLOR_YUV2BGR_UYVY, COLOR_YUV2RGBA_UYVY, COLOR_YUV2BGRA_UYVY,COLOR_YUV2RGB_YUY2, COLOR_YUV2BGR_YUY2, COLOR_YUV2RGB_YVYU, COLOR_YUV2BGR_YVYU,COLOR_YUV2RGBA_YUY2, COLOR_YUV2BGRA_YUY2, COLOR_YUV2RGBA_YVYU, COLOR_YUV2BGRA_YVYU,COLOR_YUV2GRAY_420, COLOR_YUV2GRAY_UYVY, COLOR_YUV2GRAY_YUY2,COLOR_YUV2BGR, COLOR_YUV2RGB, COLOR_RGB2YUV_YV12, COLOR_BGR2YUV_YV12, COLOR_RGBA2YUV_YV12,COLOR_BGRA2YUV_YV12, COLOR_RGB2YUV_I420, COLOR_BGR2YUV_I420, COLOR_RGBA2YUV_I420, COLOR_BGRA2YUV_I420)typedef ::testing::TestWithParamYUVCVTS Imgproc_ColorYUV;TEST_P(Imgproc_ColorYUV, accuracy)
{int code GetParam();RNG random theRNG();ConversionYUV cvt(code);const int scn cvt.getScn();const int dcn cvt.getDcn();for(int iter 0; iter 30; iter){Size sz(random.uniform(1, 641), random.uniform(1, 481));if(cvt.requiresEvenWidth()) sz.width sz.width % 2;if(cvt.requiresEvenHeight()) sz.height sz.height % 2;Size srcSize cvt.getSrcSize(sz);Mat src Mat(srcSize.height, srcSize.width * scn, CV_8UC1).reshape(scn);Size dstSize cvt.getDstSize(sz);Mat dst Mat(dstSize.height, dstSize.width * dcn, CV_8UC1).reshape(dcn);Mat gold(dstSize, CV_8UC(dcn));random.fill(src, RNG::UNIFORM, 0, 256);if(cvt.rgbWriter_)referenceYUV2RGBYUV2RGB_Converter (src, gold, cvt.yuvReader_, cvt.rgbWriter_);else if(cvt.grayWriter_)referenceYUV2GRAYYUV2GRAY_Converter(src, gold, cvt.yuvReader_, cvt.grayWriter_);else if(cvt.yuvWriter_)referenceRGB2YUVRGB2YUV_Converter (src, gold, cvt.rgbReader_, cvt.yuvWriter_);cv::cvtColor(src, dst, code, -1);EXPECT_EQ(0, countOfDifferencies(gold, dst));}
}TEST_P(Imgproc_ColorYUV, roi_accuracy)
{int code GetParam();RNG random theRNG();ConversionYUV cvt(code);const int scn cvt.getScn();const int dcn cvt.getDcn();for(int iter 0; iter 30; iter){Size sz(random.uniform(1, 641), random.uniform(1, 481));if(cvt.requiresEvenWidth()) sz.width sz.width % 2;if(cvt.requiresEvenHeight()) sz.height sz.height % 2;int roi_offset_top random.uniform(0, 6);int roi_offset_bottom random.uniform(0, 6);int roi_offset_left random.uniform(0, 6);int roi_offset_right random.uniform(0, 6);Size srcSize cvt.getSrcSize(sz);Mat src_full(srcSize.height roi_offset_top roi_offset_bottom, srcSize.width roi_offset_left roi_offset_right, CV_8UC(scn));Size dstSize cvt.getDstSize(sz);Mat dst_full(dstSize.height roi_offset_left roi_offset_right, dstSize.width roi_offset_top roi_offset_bottom, CV_8UC(dcn), Scalar::all(0));Mat gold_full(dst_full.size(), CV_8UC(dcn), Scalar::all(0));random.fill(src_full, RNG::UNIFORM, 0, 256);Mat src src_full(Range(roi_offset_top, roi_offset_top srcSize.height), Range(roi_offset_left, roi_offset_left srcSize.width));Mat dst dst_full(Range(roi_offset_left, roi_offset_left dstSize.height), Range(roi_offset_top, roi_offset_top dstSize.width));Mat gold gold_full(Range(roi_offset_left, roi_offset_left dstSize.height), Range(roi_offset_top, roi_offset_top dstSize.width));if(cvt.rgbWriter_)referenceYUV2RGBYUV2RGB_Converter (src, gold, cvt.yuvReader_, cvt.rgbWriter_);else if(cvt.grayWriter_)referenceYUV2GRAYYUV2GRAY_Converter(src, gold, cvt.yuvReader_, cvt.grayWriter_);else if(cvt.yuvWriter_)referenceRGB2YUVRGB2YUV_Converter (src, gold, cvt.rgbReader_, cvt.yuvWriter_);cv::cvtColor(src, dst, code, -1);EXPECT_EQ(0, countOfDifferencies(gold_full, dst_full));}
}INSTANTIATE_TEST_CASE_P(cvt420, Imgproc_ColorYUV,::testing::Values((int)COLOR_YUV2RGB_NV12, (int)COLOR_YUV2BGR_NV12, (int)COLOR_YUV2RGB_NV21, (int)COLOR_YUV2BGR_NV21,(int)COLOR_YUV2RGBA_NV12, (int)COLOR_YUV2BGRA_NV12, (int)COLOR_YUV2RGBA_NV21, (int)COLOR_YUV2BGRA_NV21,(int)COLOR_YUV2RGB_YV12, (int)COLOR_YUV2BGR_YV12, (int)COLOR_YUV2RGB_IYUV, (int)COLOR_YUV2BGR_IYUV,(int)COLOR_YUV2RGBA_YV12, (int)COLOR_YUV2BGRA_YV12, (int)COLOR_YUV2RGBA_IYUV, (int)COLOR_YUV2BGRA_IYUV,(int)COLOR_YUV2GRAY_420, (int)COLOR_RGB2YUV_YV12, (int)COLOR_BGR2YUV_YV12, (int)COLOR_RGBA2YUV_YV12,(int)COLOR_BGRA2YUV_YV12, (int)COLOR_RGB2YUV_I420, (int)COLOR_BGR2YUV_I420, (int)COLOR_RGBA2YUV_I420,(int)COLOR_BGRA2YUV_I420));INSTANTIATE_TEST_CASE_P(cvt422, Imgproc_ColorYUV,::testing::Values((int)COLOR_YUV2RGB_UYVY, (int)COLOR_YUV2BGR_UYVY, (int)COLOR_YUV2RGBA_UYVY, (int)COLOR_YUV2BGRA_UYVY,(int)COLOR_YUV2RGB_YUY2, (int)COLOR_YUV2BGR_YUY2, (int)COLOR_YUV2RGB_YVYU, (int)COLOR_YUV2BGR_YVYU,(int)COLOR_YUV2RGBA_YUY2, (int)COLOR_YUV2BGRA_YUY2, (int)COLOR_YUV2RGBA_YVYU, (int)COLOR_YUV2BGRA_YVYU,(int)COLOR_YUV2GRAY_UYVY, (int)COLOR_YUV2GRAY_YUY2));}TEST(cvtColorUYVY, size_issue_21035)
{Mat input Mat::zeros(1, 1, CV_8UC2);Mat output;EXPECT_THROW(cv::cvtColor(input, output, cv::COLOR_YUV2BGR_UYVY), cv::Exception);
}} // namespace
源:
(1) openCV环境配置和测试代码_opencv配置好了,怎么在studio中测试包含的代码-CSDN博客. (2) imgproc 模块. 图像处理 — OpenCV 2.3.2 documentation.