Я звоню кадрам с карты захвата Blackmagic Decklink и пытаюсь преобразовать их в cv::Mat
.
У меня это работает, но полученные кадры выглядят так:
Когда они должны выглядеть следующим образом:
Входящие кадры действительны, поэтомудолжно быть мое обращение.Исходя из этого вопроса:
Получение левого и правого кадров с помощью BlackMagic SDK и преобразование их в opencv mat
Я использую:
bool deckLinkVideoFrameToCvMat(ComPtr<IDeckLinkVideoInputFrame> in,
cv::Mat& out)
{
void* data;
if (FAILED(in->GetBytes(&data))) {
std::cout << "Fail obtaining the data from videoFrame\n" << std::endl;
return S_FALSE;
}
cv::Mat loadedImage;
cv::Mat mat = cv::Mat(in->GetHeight(), in->GetWidth(), CV_8UC2, data, in->GetRowBytes());
cv::cvtColor(mat, loadedImage, CV_YUV2BGR_UYVY);
loadedImage.copyTo(out);
return true;
}
Где я иду не так?
РЕДАКТИРОВАТЬ: с удаленным параметром шага, как предложено: