c# - 在房间图片中选择一个区域,可以是墙壁、屋顶或地板,然后应用纯色或纹理

标签 c# opencv emgucv detection

我是 OpenCV 的新手。我有一个项目可以检测房间图片中的墙壁、地板和屋顶,并根据选择应用颜色或纹理。我在互联网上搜索了很多,但找不到合适的。

我也尝试过用像素方法给背景上色,但那样就没有房间的感觉了。如果您不介意,请有人在这方面帮助我或与我分享代码。提前致谢。

最佳答案

为了获得真实的结果,您需要:

1) 识别什么是该表面的一部分,什么不是该表面的一部分。如果光照或纹理不是完全平坦的,这就变成了边缘检测练习——或者要求用户帮助勾勒出受影响的区域。

2) 识别哪些变化是表面纹理的一部分并且应该被移除,哪些是照明效果并且必须保留并应用于新的表面处理。

3) 如果新表面有纹理,请识别该表面的大小和方向,这样您就知道如何缩放/拉伸(stretch)/倾斜纹理以正确反射(reflect)透视和尺寸。

4) 使用所有这些信息将新纹理处理到该表面占据的图像区域。

做一个手动辅助的版本也不错;这是一个适合图像处理入门类(class)的期末项目。自动化变得困难。

各种墙面处理、木瓦、壁板等制造商有时会提供免费工具来完成其中的一些工作。还有一些工具从制造商那里获取半标准化的数据文件并执行此操作;其功能的缩减版本可能作为免费软件提供。我建议做一些市场调查——找到并尝试其中的一些,决定你喜欢和不喜欢它们的什么,然后用它来指导你自己的设计。

在旧版本的 SIGGRAPH session 记录中,也会有很多关于此类过​​程的讨论,那时候我们还在弄清楚所有这些问题。一些关于计算机图形学的书籍也可能讨论纹理替换。

玩得开心!

关于c# - 在房间图片中选择一个区域,可以是墙壁、屋顶或地板,然后应用纯色或纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37801986/

相关文章:

c# - 使用c#将文件从一个IP地址发送到另一个IP地址

c - 如何确定 CvMat 的数据类型

python - 连接已建立轮廓的末端

c# - 使用 C# 将 MediumBlob 数据转换为位图图像

c# - 相机旋转 SolvePnp

c# - 如何将填充有其子类的基类数组序列化为 XML?

c# - 检查由 WebClient 代理设置的 header

c# - 在回发期间 JavaScript 失去其功能

opencv - 从图像点计算 x,y 坐标 (3D)

c# - 如何在 EmguCV 中将图像转换为矩阵,然后将矩阵转换为位图?