我想使用opencv框架平滑输出图像边缘,我正在尝试以下步骤。步骤从这里https://stackoverflow.com/a/17175381/790842使用opencv图像边缘平滑
int lowThreshold = 10.0;
int ratio = 3;
int kernel_size = 3;
Mat src_gray,detected_edges,dst,blurred;
/// Convert the image to grayscale
cvtColor(result, src_gray, CV_BGR2GRAY);
/// Reduce noise with a kernel 3x3
cv::blur(src_gray, detected_edges, cv::Size(5,5));
/// Canny detector
cv::Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size);
//Works fine upto here I am getting perfect edge mask
cv::dilate(detected_edges, blurred, result);
//I get Assertion failed (src.channels() == 1 && func != 0) in countNonZero ERROR while doing dilate
result.copyTo(blurred, blurred);
cv::blur(blurred, blurred, cv::Size(3.0,3.0));
blurred.copyTo(result, detected_edges);
UIImage *image = [UIImageCVMatConverter UIImageFromCVMat:result];
我想帮助我时是否打算在正确的方式,还是我错过什么了?
感谢您的任何建议和帮助。
更新时间:
我有一个像下面一样从grabcut算法得到的,现在我想边缘平滑应用于图像,你可以看到图像不流畅。
@Boyko Perfanov定义我需要在它的帮助。我试图按照您在此处陈述的步骤http://stackoverflow.com/a/17175381/790842 – iphonic
@herohuyongtao你能帮忙吗? – iphonic
@berak你能帮忙吗? – iphonic