mirror of
https://github.com/opencv/opencv_contrib.git
synced 2025-10-21 14:41:58 +08:00
ovis: add updateTexture function and allow grayscale texture format
This commit is contained in:
@@ -281,6 +281,15 @@ CV_EXPORTS_W void createPointCloudMesh(const String& name, InputArray vertices,
|
||||
* @param segments number of segments per side
|
||||
*/
|
||||
CV_EXPORTS_W void createGridMesh(const String& name, const Size2f& size, const Size& segments = Size(1, 1));
|
||||
|
||||
/**
|
||||
* updates an existing texture
|
||||
*
|
||||
* A new texture can be created with @ref createPlaneMesh
|
||||
* @param name name of the texture
|
||||
* @param image the image data
|
||||
*/
|
||||
CV_EXPORTS_W void updateTexture(const String& name, InputArray image);
|
||||
//! @}
|
||||
}
|
||||
}
|
||||
|
@@ -31,11 +31,28 @@ WindowScene::~WindowScene() {}
|
||||
|
||||
void _createTexture(const String& name, Mat image)
|
||||
{
|
||||
PixelFormat format;
|
||||
switch(image.type())
|
||||
{
|
||||
case CV_8UC4:
|
||||
format = PF_BYTE_BGRA;
|
||||
break;
|
||||
case CV_8UC3:
|
||||
format = PF_BYTE_BGR;
|
||||
break;
|
||||
case CV_8UC1:
|
||||
format = PF_BYTE_L;
|
||||
break;
|
||||
default:
|
||||
CV_Error(Error::StsBadArg, "currently only CV_8UC1, CV_8UC3, CV_8UC4 textures are supported");
|
||||
break;
|
||||
}
|
||||
|
||||
TextureManager& texMgr = TextureManager::getSingleton();
|
||||
TexturePtr tex = texMgr.getByName(name, RESOURCEGROUP_NAME);
|
||||
|
||||
Image im;
|
||||
im.loadDynamicImage(image.ptr(), image.cols, image.rows, 1, PF_BYTE_BGR);
|
||||
im.loadDynamicImage(image.ptr(), image.cols, image.rows, 1, format);
|
||||
|
||||
if (tex)
|
||||
{
|
||||
@@ -323,7 +340,7 @@ public:
|
||||
|
||||
void setBackground(InputArray image)
|
||||
{
|
||||
CV_Assert(image.type() == CV_8UC3, bgplane);
|
||||
CV_Assert(bgplane);
|
||||
|
||||
String name = sceneMgr->getName() + "_Background";
|
||||
|
||||
@@ -770,5 +787,13 @@ void setMaterialProperty(const String& name, const String& prop, const Scalar& v
|
||||
if(!set)
|
||||
CV_Error_(Error::StsBadArg, ("shader parameter named '%s' not found", prop.c_str()));
|
||||
}
|
||||
|
||||
void updateTexture(const String& name, InputArray image)
|
||||
{
|
||||
CV_Assert(_app);
|
||||
TexturePtr tex = TextureManager::getSingleton().getByName(name, RESOURCEGROUP_NAME);
|
||||
CV_Assert(tex);
|
||||
_createTexture(name, image.getMat());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user