用c语言改写import cv2 import numpy as np #读取原始图像 src = cv2.imread('scenery.png') #图像灰度处理 gray = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY) #自定义卷积核 kernel = np.array([[-1,-1,-1],[-1,10,-1],[-1,-1,-1]]) #kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]]) #图像浮雕效果 output = cv2.filter2D(gray, -1, kernel) #显示图像 cv2.imshow('Original Image', src) cv2.imshow('Emboss_1',output) #等待显示 cv2.waitKey() cv2.destroyAllWindows()
时间: 2023-08-24 17:05:07 浏览: 82
将上述代码用C语言进行改写需要使用OpenCV库和Numpy库的C语言接口。以下是一个简单的例子,用于读取一张图像并对其进行浮雕处理:
```c
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char** argv) {
Mat src, gray, output;
src = imread("scenery.png", IMREAD_COLOR);
if (src.empty()) {
printf("Could not open or find the image\n");
return -1;
}
cvtColor(src, gray, COLOR_BGR2GRAY);
Mat kernel = (Mat_<float>(3, 3) <<
-1, -1, -1,
-1, 10, -1,
-1, -1, -1);
filter2D(gray, output, -1, kernel, Point(-1, -1), 0, BORDER_DEFAULT);
namedWindow("Original Image", WINDOW_AUTOSIZE);
namedWindow("Emboss_1", WINDOW_AUTOSIZE);
imshow("Original Image", src);
imshow("Emboss_1", output);
waitKey(0);
return 0;
}
```
这个程序首先使用OpenCV库的imread函数读取输入图像,然后使用cvtColor函数将图像转换为灰度图像。接下来,创建一个3x3的矩阵作为卷积核,然后使用filter2D函数进行卷积操作。最后,使用imshow函数显示原始图像和浮雕效果图像,并使用waitKey函数等待用户按下任意键以关闭窗口。
阅读全文