[英]opencv copy data from a *Mat to a Mat
我有兩個cv::Mat
對象:
cv::Mat *frameLeftRemap;
cv::Mat frameLeft2;
數據從攝像機流到* frameLeftRemap中。 我需要將數據復制到frameLeft2,然后刪除frameLeftRemap,以避免我看到的幀偽像。 (這是由相機制造商支持部門建議的。)
函數是:
void ProcessImageLeft(AVT::VmbAPI::FramePtr pFrame)
{
VmbUchar_t *pBuffer;
VmbUint32_t FrameWidth;
VmbUint32_t FrameHeight;
//prepare frame information:
pFrame->GetWidth(FrameWidth);
pFrame->GetHeight(FrameHeight);
pFrame->GetImage(pBuffer);
//edited
Mat1b imageL(FrameHeight, FrameWidth, (uchar*)pBuffer);
cv::remap(imageL, *frameLeftRemap, mx1, my1, cv::INTER_LINEAR);
frameLeft2 = frameLeftRemap->clone();
//frameLeftRemap->copyTo(frameLeft2);
cv::imshow("right", frameLeft2);
cv::waitKey(1);
delete frameLeftRemap;
}
copyTo和clone都給出一個錯誤:
this is nullPtr. read access violation
我在這里做錯了什么?
frameL= frameLeftRemap->clone();
應該可以正常工作。 看來您在frameL
有問題。 嘗試使用cv::imshow
或cv::imwrite
顯示它,以確保在克隆之前損壞它。 然后解決原始問題。 如果您發布了代碼,我們將為您提供更多幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.