计算并显示均值滤波器处理一张图片的时间

用到的函数和转换格式

getTickCount()get

TickCount():系统中会有专门的一个数据从开机哪一个起就会一直累加,这个函数就是返回一个值从某一时刻(比如计算机启动)开始,计算机总共经过的轮的次数 单位为 ms

getTickFrequency()

getTickFrequency():这个函数的单位是秒,也就是返回了一在一秒内计算机重复的次数,也就是CPU的频率。

QString::number()

QString::number是将数数字(整数、浮点数、有符号、无符号等)转换为QString类型,常用于UI数据显示。
我们这里转换为double类型的数据

QString text = QString::number(duration, 10, 1) + " ms";

代码块


double duration = 0.0;
cv::Mat dst;
cv::Mat src = cv::imread("迪丽热巴.jpg");
//获取开始
duration = static_cast<double>(cv::getTickCount());
//进行图片的均值滤波
cv::blur(src,dst, cv::Size(3, 3), cv::Point(-1, -1));
//计算结束
duration = static_cast<double>(cv::getTickCount()) - duration;
//计算用了多少ms
duration /= (double)cv::getTickFrequency() / 1000;
cv::Mat image = cv::Mat::zeros(cv::Size(src.cols, src.rows), CV_8UC1);

//设置绘制文本的相关参数
QString text = QString::number(duration, 10, 1) + " ms";
int font_face = cv::FONT_HERSHEY_COMPLEX;
double font_scale = 2;
int thickness = 2;
int baseline;

//获取文本框的长宽
cv::Size text_size = cv::getTextSize(text.toStdString(), font_face, font_scale, thickness, &baseline);

//将文本框居中绘制
cv::Point origin;
origin.x = image.cols / 2 - text_size.width / 2;
origin.y = image.rows / 2 + text_size.height / 2;
cv::putText(image, text.toStdString(), origin, font_face, font_scale, cv::Scalar(255, 255, 255), thickness, 4, 0);
cv::imshow("time", image);
cv::imshow("0",dst);

结果展示

均值滤波处理时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个使用 Python 实现 5*5 几何均值滤波的例子: ``` import numpy as np def geometric_mean_filter(image, kernel_size): # 创建一个零图像,用于存储滤波后的图像 filtered_image = np.zeros(image.shape) # 获取图像的行数和列数 rows, cols = image.shape # 获取滤波的大小 kernel_size = kernel_size # 计算滤波的半径 kernel_radius = kernel_size // 2 # 遍历图像的每一行和每一列 for i in range(rows): for j in range(cols): # 初始化几何均值 geometric_mean = 1 # 遍历滤波内的每一个像素 for m in range(-kernel_radius, kernel_radius+1): for n in range(-kernel_radius, kernel_radius+1): # 获取图像中对应的像素值 pixel = image[i+m, j+n] # 计算几何均值 geometric_mean *= pixel # 计算滤波后的像素值 filtered_image[i, j] = geometric_mean**(1/(kernel_size**2)) return filtered_image # 读入图像并转换为灰度图 image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 调用几何均值滤波函数 filtered_image = geometric_mean_filter(image, 5) # 显示滤波后的图像 cv2.imshow('Filtered Image', filtered_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在上面的代码中,我们使用了 numpy 库来处理图像。我们首先创建了一个零图像,用于存储滤波后的图像。然后我们获取了图像的 ### 回答2: 5*5几何均值滤波是一种用于图像处理的平滑滤波,其原理是取像素周围一定区域的像素值的几何均值作为滤波后的像素值。下面是一个使用Python编写的5*5几何均值滤波的代码示例: ```python import cv2 import numpy as np def geometric_mean_filter(image): # 获取图像尺寸 height, width = image.shape # 创建一个与原图像尺寸相同的空白图像用于存储滤波结果 filtered_image = np.zeros((height, width), dtype=np.uint8) # 遍历每个像素 for i in range(2, height-2): for j in range(2, width-2): # 计算5*5区域内像素的几何均值 multiply = 1 for m in range(-2, 3): for n in range(-2, 3): multiply *= image[i+m, j+n] filtered_image[i, j] = np.uint8(multiply**(1/25)) return filtered_image # 读取图像 image = cv2.imread('image.jpg', 0) # 以灰度图像方式读取 # 进行滤波 filtered_image = geometric_mean_filter(image) # 显示原图像和滤波后的图像 cv2.imshow("Original Image", image) cv2.imshow("Filtered Image", filtered_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个代码中,我们首先导入了需要使用的库,包括OpenCV和NumPy。然后,定义了一个名为`geometric_mean_filter`的函数,用于实现几何均值滤波操作。在这个函数中,我们使用两个循环遍历图像的每个像素,并计算5*5区域内像素的几何均值。最后,我们将滤波结果保存在一个空白图像中,并返回该图像。 在主程序中,我们读取了一张图像,并调用`geometric_mean_filter`函数对图像进行滤波操作。最后,我们使用OpenCV的`imshow`函数显示原图像和滤波后的图像,并通过`waitkey`和`destroyAllWindows`函数等待并关闭显示窗口。 ### 回答3: 几何均值滤波是一种常见的图像处理滤波,用于降低图像中的噪声。它使用一个固定大小(例如5x5)的窗口对图像进行处理,将窗口内像素的几何平均值作为中心像素的值。 下面是以Python编写的5x5几何均值滤波代码示例: ```python import cv2 import numpy as np def geometric_mean_filter(img): rows, cols = img.shape filtered_img = np.zeros((rows, cols), dtype=np.uint8) for i in range(2, rows-2): for j in range(2, cols-2): window = img[i-2:i+3, j-2:j+3] # 提取5x5窗口内的像素值 filtered_img[i, j] = np.uint8(np.power(np.prod(window), 1/25)) # 计算几何平均值并赋给中心像素 return filtered_img # 读取图像 image = cv2.imread('image.jpg', 0) # 以灰度模式读取图像 # 进行几何均值滤波 filtered_image = geometric_mean_filter(image) # 显示原始图像和滤波后的图像 cv2.imshow('Original Image', image) cv2.imshow('Filtered Image', filtered_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在代码中,首先导入了必要的库,包括OpenCV和NumPy。然后定义了一个名为geometric_mean_filter的函数,该函数接受一个灰度图像作为输入,并返回经过几何均值滤波处理的图像。 在函数中,使用嵌套的两个循环遍历图像的所有像素,并提取每个像素周围的5x5窗口。然后,计算窗口内像素的几何平均值,并将该值赋给中心像素。 最后,通过调用cv2.imshow函数显示原始图像和滤波后的图像,并使用cv2.waitKey和cv2.destroyAllWindows等函数来保持图像窗口的显示,直到用户关闭。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值