图像序列化后,方便传输。
如果不使用序列化,在传输数据时还需要同时传输图像的长宽等信息。
///<序列化
HalconCpp::HTuple hSerItem,hSerData,hSize;
//将hImg序列化到hSerItem
HalconCpp::SerializeImage(hImg, &hSerItem);
//获取序列化后的数据指针
HalconCpp::GetSerializedItemPtr(hSerItem, &hSerData, &hSize);
//将序列化后的数据转换为string,便于传输
std::string str = std::string((char*)(Hlong)hSerData, hSize.I());
//清除序列化句柄
HalconCpp::ClearSerializedItem(hSerItem);
///<反序列化
HalconCpp::HTuple hRstSerItem;
HalconCpp::HImage hRstImg;
//通过数据指针,创建(恢复)序列化句柄
HalconCpp::CreateSerializedItemPtr((Hlong)str.data(), (Hlong)str.length(), "true" , &hRstSerItem);
//将序列化句柄反序列化为hRstImg
HalconCpp::DeserializeImage(&hRstImg, hRstSerItem);
//保存图片查看结果
hRstImg.WriteImage("png", 0, "cvt.png");
//释放序列化句柄
HalconCpp::ClearSerializedItem(hRstSerItem);