opencv - 将OpenCV IplImage或Mat复制到Freeimage FIBITMAP

我需要在FreeImage(FIBITMAP)和OpenCV格式(IplImage和/或Mat)之间交换数据。我很好地将数据从FIBITMAP获取到IplImage或Mat中,因为FreeImage为您提供了功能FreeImage_GetScanLine,您可以将OPenCV imageData ptr设置为等于。

但是,我坚持如何做相反的事情,即一旦有了OpenCV镜像,如何将其数据转换为FreeImage镜像?

最佳答案

您只需要稍微小心一点就复制数据指针,很多图像格式都有填充以在例如4字节边界上的每一行开始。

如果您的图像具有GetScanLine()函数,那么制作一个空的plImage * / cv::Mat并使用从GetScanLine()返回的指针和cv::MAt的.ptr()成员进行内存复制,可能更安全。

cv::Mat &src        
int srcRowBytes = width  * src.elemSize();

for (int ih=0;ih<height;ih++) {
    memcpy(dest.pointer_to_row(ih),src.ptr(ih),srcRowBytes);
}

关于opencv - 将OpenCV IplImage或Mat复制到Freeimage FIBITMAP中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927049/

相关文章:

macos - 从USB而非iSight(OSX)捕获OpenCV

opencv - 使用CUDA构建OpenCV

iphone - iPhone照片微笑操作应用程序

docker - 从正在运行的 keycloak docker 容器导出领域失败

types - 将IplImage类型IPL_LABEL转换为IplImage类型IPL_DEPTH

opencv - 从视差生成3D点

opencv - 关于cvStereorectify的使用

multithreading - 如何确保两个 docker 容器不处理同一个文件?

qt - 在QGraphicsView中看不到IplImage

objective-c - diff(X)如何转换为OpenCV或Objective C?