浮雕效果是指物体的轮廓、边缘外貌经过修整形成凸出效果,浮雕类似边缘检测,目的是突出对象的边缘和轮廓。浮雕效果是实现图像填充色与灰色的转换,用原填充色描画边缘,使图像呈现凸起或凹进效果,出现“浮雕”图案。浮雕处理可以采用边缘锐化、边缘检测算子检测或其相关类似方法来实现。opencv c++代码实现
时间: 2023-06-23 09:09:26 浏览: 248
以下是使用 OpenCV C++ 实现浮雕效果的代码示例:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("input.jpg"); // 读取图像
if (img.empty()) // 判断图像是否为空
{
cout << "Could not open or find the image!" << endl;
return -1;
}
Mat img_gray, img_emboss;
cvtColor(img, img_gray, COLOR_BGR2GRAY); // 将图像转换为灰度图像
// 定义浮雕核
float kernel_data[3][3] = {
{-1, -1, 0},
{-1, 0, 1},
{ 0, 1, 1}
};
Mat kernel = Mat(3, 3, CV_32F, kernel_data);
// 对灰度图像进行浮雕处理
filter2D(img_gray, img_emboss, -1, kernel, Point(-1, -1), 128, BORDER_REPLICATE);
// 显示原图像和浮雕图像
namedWindow("Input Image", WINDOW_NORMAL);
namedWindow("Embossed Image", WINDOW_NORMAL);
imshow("Input Image", img);
imshow("Embossed Image", img_emboss);
waitKey(0); // 等待按键
return 0;
}
```
在上述代码中,我们首先读取输入图像,然后将其转换为灰度图像。然后,我们定义一个浮雕核并使用 `filter2D` 函数将其应用于灰度图像。最后,我们将原图像和浮雕图像显示在窗口中。在 `filter2D` 函数中,我们将 `delta` 参数设置为 128,这是为了使浮雕效果更加明显,但这个值可以根据需要进行调整。
注意,如果要使用自定义的浮雕核,需要确保其和输入图像具有相同的数据类型。在上述示例中,我们使用了 `CV_32F` 数据类型,因为浮雕核的值可能为浮点数。
阅读全文