我是openCV的新手,想要一点帮助

所以我的基本想法是使用opencv创建一个用于室内设计的小型应用程序。

问题

如何区分图片的墙壁和地板(即使在图片中有些杂音的情况下)。

对于前

现在,我的想法是,如果我能以某种方式找到墙壁或瓷砖的边缘,然后找到用于室内装饰的任何物体(例如任何椅子),那么该物体将被完美地放置在地板上(即两个图像融合在一起)

我的方法

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv/cv.h>
using namespace cv;
using namespace std;
int main(){
  Mat image=imread("/home/ayusun/Downloads/IMG_20140104_143443.jpg");
  Mat resized_img,dst,contours,detected_edges;
  resize(image, resized_img, Size(1024, 768), 0, 0, INTER_CUBIC);
  threshold(resized_img, dst, 128, 255, CV_THRESH_BINARY);
  //Canny(image,contours,10,350);

  namedWindow("resized image");
  imshow("resized image",resized_img);

  //imshow("threshold",dst);
  blur( resized_img, detected_edges, Size(2,2) );
  imshow("blurred", detected_edges);

  Canny(detected_edges,contours,10,350);
  imshow("contour",contours);
  waitKey(0);
  return 1;
}

我尝试了canny边缘检测算法,但似乎找到了很多边缘。而且我仍然不知道如何将房间的地板和椅子的地板结合起来

谢谢

最佳答案

抱歉,非自愿广告很重要,但是宜家使用了目录智能手机应用程序,该应用程序使用增强现实技术将对象/家具放置在您房间的图像周围。那是你想做的吗?

为了实现这一目标,您需要一个“精确定位”,这是将对象连接到的固定点。这通常有助于区分上面应用程序中的墙壁和地板(并使事情变得容易)。

如果将人的脚悬吊起来,并且墙壁/地板上的纹理相同,那么即使将墙壁与地板区分开也很困难(但由于“重力感”,我们设法做到了)。

找到一些关键点,或者请注明您是否打算使用固定相机(即永远不会水平放置)

关于c++ - 使用OpenCV进行图像分割,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20920655/

10-11 22:25
查看更多