设为首页 加入收藏

TOP

OpenCV 基于Laplacian算子的图像边缘增强
2014-11-24 08:32:16 来源: 作者: 【 】 浏览:0
Tags:OpenCV 基于 Laplacian 算子 图像 边缘 增强

OpenCV 基于Laplacian算子的图像边缘增强


下面代码实现了基于Laplacian算子的图像边缘增强 。


算法:


边缘增强图像 = 源图像 + 边缘图像


// 基于Laplacian算子的图像边缘增强
// Author: http://blog.csdn.net/icvpr



#include
#include
#include
void edgeEnhance(cv::Mat& srcImg, cv::Mat& dstImg)
{
if (!dstImg.empty())
{
dstImg.release();
}

std::vector rgb;


if (srcImg.channels() == 3) // rgb image
{
cv::split(srcImg, rgb);
}
else if (srcImg.channels() == 1) // gray image
{
rgb.push_back(srcImg);
}

// 分别对R、G、B三个通道进行边缘增强
for (size_t i = 0; i < rgb.size(); i++)
{
cv::Mat sharpMat8U;
cv::Mat sharpMat;
cv::Mat blurMat;


// 高斯平滑
cv::GaussianBlur(rgb[i], blurMat, cv::Size(3,3), 0, 0);


// 计算拉普拉斯
cv::Laplacian(blurMat, sharpMat, CV_16S);


// 转换类型
sharpMat.convertTo(sharpMat8U, CV_8U);
cv::add(rgb[i], sharpMat8U, rgb[i]);
}



cv::merge(rgb, dstImg);
}



int main(int argc, char** argv)
{
cv::Mat image = cv::imread("../test.jpg");
if (image.empty())
{
std::cout<<"read image failure"< return -1;
}


// rgb
cv::Mat resultRgb;
edgeEnhance(image, resultRgb);
cv::imwrite("../outRgb.jpg", resultRgb);


// gray
cv::Mat gray;
cv::cvtColor(image, gray, CV_BGR2GRAY);
cv::imwrite("../gray.jpg", gray);


cv::Mat resultGray;
edgeEnhance(gray, resultGray);
cv::imwrite("../outGray.jpg", resultGray);


return 0;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇OpenCV 基于混合高斯模型GMM的运.. 下一篇OpenCV_基于HOG特征的行人检测

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)