我正在使用QCAR在Android上进行开发,尝试将QCARImage转换为cvMat并使用cvtColor更改颜色。但是在cvtColor中出现了以下错误,我想知道这个错误的含义。 (dcn == 3 || dcn == 4)、scn == 2和depth == CV_8U分别代表什么意思?
09-23 14:12:54.944: E/cv::error()(23942): OpenCV错误:在/home/reports/ci/slave_desktop/50-SDK/opencv/modules/imgproc/src/color.cpp文件的第3389行,断言失败((dcn == 3 || dcn == 4) && scn == 2 && depth == CV_8U)。 09-23 14:12:54.944: A/libc(23942): 致命信号11 (SIGSEGV)于0xdeadbaad (code=1),线程23963 (Thread-884)
以下是我的代码:
09-23 14:12:54.944: E/cv::error()(23942): OpenCV错误:在/home/reports/ci/slave_desktop/50-SDK/opencv/modules/imgproc/src/color.cpp文件的第3389行,断言失败((dcn == 3 || dcn == 4) && scn == 2 && depth == CV_8U)。 09-23 14:12:54.944: A/libc(23942): 致命信号11 (SIGSEGV)于0xdeadbaad (code=1),线程23963 (Thread-884)
以下是我的代码:
QCAR::State state = QCAR::Renderer::getInstance().begin();
// Explicitly render the Video Background
QCAR::Renderer::getInstance().drawVideoBackground();
//get the captured frame of camera
QCAR::Image *img = NULL;
QCAR::Frame frame = state.getFrame();
//getting qcar::image data from QCAR
for (int i = 0; i < frame.getNumImages(); ++i) {
const QCAR::Image *QCARimage = frame.getImage(i);
LOGD("format %d", QCARimage->getFormat());
if (QCARimage->getFormat() == QCAR::RGB565) {
img = (QCAR::Image*) QCARimage;
break;
}
}
if(img){
//converting to mat
Mat capture = Mat(img->getHeight(), img->getWidth(), CV_8UC3, (unsigned char *)img->getPixels());
cvtColor(capture, capture, CV_BGR5652BGR, 0);
}
非常抱歉我的英语不太好。