【发布时间】:2014-03-14 18:36:27
【问题描述】:
我正在尝试使用 opencv 框架平滑输出图像边缘,我正在尝试以下步骤。从这里采取的步骤https://stackoverflow.com/a/17175381/790842
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 我需要帮助。我正在尝试按照您在此处所述的步骤stackoverflow.com/a/17175381/790842
-
@herohuyongtao 你能帮忙吗?
-
@berak 你能帮忙吗?
标签: c++ ios iphone objective-c opencv