'median' 函数C++实现
时间: 2024-01-25 10:03:13 浏览: 115
以下是一个简单的 C++ 实现,用于计算一个整数数组的中位数:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
double median(int arr[], int n) {
sort(arr, arr + n);
if (n % 2 == 0) {
return (double)(arr[n/2] + arr[n/2 - 1]) / 2.0;
} else {
return (double)arr[n/2];
}
}
int main() {
int arr[] = {1, 2, 5, 3, 6, 4};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Median = " << median(arr, n) << endl;
return 0;
}
```
该函数使用 STL 的 `sort` 函数将数组升序排序,然后根据数组元素数量的奇偶性来计算中位数。如果数组元素数量为偶数,则返回中间两个元素的平均值;否则返回中间元素。
相关问题
c++ medianBlur
c++中的medianBlur函数是OpenCV图像处理库中的一个函数,用于对图像进行中值滤波处理。中值滤波是一种非线性滤波方法,它可以有效地去除图像中的椒盐噪声和斑点噪声,同时保留图像的边缘信息。
该函数的原型为:
```c++
void medianBlur(InputArray src, OutputArray dst, int ksize);
```
其中,src表示输入图像,dst表示输出图像,ksize表示滤波核的大小,必须是大于1的奇数。
下面是一个使用medianBlur函数进行中值滤波的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("lena.jpg");
if (src.empty())
{
cout << "can not load image" << endl;
return -1;
}
Mat dst;
medianBlur(src, dst, 5);
imshow("src", src);
imshow("dst", dst);
waitKey(0);
return 0;
}
```
在这个示例中,我们首先读取了一张名为lena.jpg的图像,然后使用medianBlur函数对其进行中值滤波处理,并将结果显示出来。
基于opencv,c++实现中值滤波
中值滤波是一种常用的图像滤波方法,可以去除图像中的椒盐噪声等离群点。下面是基于OpenCV和C++实现中值滤波的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("lena.jpg", IMREAD_GRAYSCALE); // 读取灰度图像
Mat dst;
medianBlur(img, dst, 3); // 中值滤波,窗口大小为3x3
imshow("Original Image", img);
imshow("Median Filtered Image", dst);
waitKey(0);
return 0;
}
```
在上面的示例代码中,首先使用`imread`函数读取一张灰度图像,然后使用`medianBlur`函数对图像进行中值滤波,其中第三个参数为滤波窗口的大小,这里为3x3。最后使用`imshow`函数显示原始图像和中值滤波后的图像,并使用`waitKey`函数等待用户按下按键。
阅读全文