我正在尝试通过我正在编写的过滤器的输出引脚输出一个 Cv Mat 文件。我曾尝试使用 ADTF_OpenCV Helper,但这只会给我带来更多错误。
我正在使用的当前代码是这样的:
if (!outputImage.empty())
{
// write to pin
writeMatToPin(*m_pWriterVideo, outputImage, m_pClock->GetStreamTime());
}
void writeMatToPin(adtf::streaming::cSampleWriter& writer, const cv::Mat& outputImage, tTimeStamp streamTime)
{
//create write buffer
adtf::ucom::object_ptr<adtf::streaming::ISample> pWriteSample;
if (IS_OK(adtf::streaming::alloc_sample(pWriteSample, streamTime)))
{
adtf::ucom::object_ptr_locked<adtf::streaming::ISampleBuffer> pWriteBuffer;
if (IS_OK(pWriteSample->WriteLock(pWriteBuffer, outputImage.cols * outputImage.rows * outputImage.channels())))
{
pWriteBuffer->Write(adtf::base::adtf_memory_buffer<void, tSize>((void*) outputImage.data,
outputImage.cols * outputImage.rows * outputImage.channels()));
}
}
writer << pWriteSample << adtf::streaming::flush << adtf::streaming::trigger;
}