我是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/