找了个 C 代码是这样写的,问题是这个库在 cv::compare
的时候没有 这个 cv::GC_PR_FGD
我在库里面 cgo 调用时把它改为了 3
也是不行的。
有兄弟知道 gocv 怎么调用 grabCut 来抠图吗
cv::Mat image= cv::imread("../tower.jpg");
if (!image.data)
{
cout<<"不能打开图像!"<<endl;
return 0;
}
cv::Rect rectangle(50,70,image.cols-150,image.rows-180);
cv::Mat result;
cv::Mat bgModel,fgModel;
double tt = cv::getTickCount();
cv::grabCut(image,
result,
rectangle,
bgModel,fgModel,
cv::GC_INIT_WITH_RECT); // 用矩形
tt = cv::getTickCount() - tt;
printf("算法执行执行时间:%g ms\n", tt/cv::getTickFrequency()*1000);
cv::compare(result,cv::GC_PR_FGD,result,cv::CMP_EQ);
cv::Mat foreground(image.size(),CV_8UC3,cv::Scalar(255,255,255));
image.copyTo(foreground,result);
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.