主要思想是允许用户重新着色到基于特定墙壁的用户选择。目前我已经使用cvFloodFill
(帮助准备蒙版图像)实现了这个功能,它可以帮助我改变HSV
墙的相对值,这样我就可以保留边缘。但这个解决方案的问题是它适用于颜色并且所有墙壁都被重新粉刷而不是用户选择的单一墙壁。
我也尝试过精明的边缘检测,但它只能检测边缘但无法将其转换为区域。
请在下面找到我目前用于重绘功能的代码
准备口罩
cvFloodFill(mask, new CvPoint(295, 75), new CvScalar(255, 255, 255,0), cvScalarAll(1), cvScalarAll(1), null, 4, null);
拆分通道
cvSplit(hsvImage, hChannel, sChannel, vChannel, null);
换颜色
cvAddS(vChannel, new CvScalar(255*(0.76-0.40),0,0,0), vChannel, mask);
我们如何从图像中检测边缘和相应区域。
我正在寻找可以不是opencv
但应该适用于 iPhone 和 android的解决方案
编辑
我可以使用以下步骤获得如下图所示的结果
cvCvtColor(image, gray, CV_BGR2GRAY);
cvSmooth(gray,smooth,CV_GAUSSIAN,7,7,0,0);
cvCanny(smooth, canny, 10, 250, 5);
此输出有两个问题,不知道如何解决它们 1. 靠近边缘 2. 移除小边缘