W的图像处理之圆检测(1)一图像预处理

感谢链接中各位博主的博文帮助我对图像预处理的理解!

一.图像预处理

图像预处理的主要目的:

消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而改进特征抽取、图像分割、匹配和识别的可靠性。

图像灰度变换、二值化、直方图

直方图均衡化
目的:通过直方图均衡化,图像像素分配更加均匀,包含的像素灰度值更加丰富,对比度更高。

OpenCv直方图均衡化
equalizeHist

#include<opencv2/opencv.hpp>
#include<vector>
using namespace std;
using namespace cv;
int main() {
	Mat temp = imread("C:\\Users\\26011\\Desktop\\毕设\\毕设程序\\picture\\2.bmp",0);
	imshow("原图", temp);
	equalizeHist(temp, temp);	
	imshow("均衡后", temp);
	waitKey(-1);
 
}


滤波
图像处理中常见的滤波算法:均值滤波、中值滤波、高斯滤波等。
在这里插入图片描述

高斯滤波:对图像进行平滑的同时,能都更多的保留图像的总体灰度分布特征
GaussianBlur

GaussianBlur函数原型: 通过调整高斯函数的标准差(sigma)来控制平滑程度,sigma值越大,滤波窗口越大,滤波效果越明显(图像越模糊钝化)

CV_EXPORTS_W void GaussianBlur( InputArray src, OutputArray dst, Size ksize,
                                double sigmaX, double sigmaY = 0,
                                int borderType = BORDER_DEFAULT );

参数详解如下:
1.src,输入图像,即源图像
2.dst,即目标图像,
3.ksize,高斯内核的大小。
4.sigma,控制平滑程度,sigma值越大,图像越模糊钝化

二值化
图像的二值化就是将图像上的像素点的灰度值设置为0或255,使整个图像呈现出明显的黑白效果,使图像中数据量大为减少,从而凸显出目标的轮廓。

OpenCv二值化函数——Threshold

void cvThreshold( const CvArr* src, CvArr* dst, double threshold,
                  double max_value, int threshold_type );

参数详解如下:
1.src是指输入的图像,
2.dst指的是处理后的图像,
3.threshold,表示阈值,
4. max_value是当threshold_type阈值类型type取THRESH_BINARY 或THRESH_BINARY_INV阈值类型时的最大值.,
5. threshold_type 表示运算方法,通过查询源文件可以看到type的取值情况;

#include <iostream>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
	Mat imag, result;
	imag = imread("C:\\Users\\26011\\Desktop\\毕设\\毕设程序\\picture\\2.bmp",0);	//将读入的彩色图像直接以灰度图像读入
	namedWindow("原图", 1);
	imshow("原图", imag);
	result = imag.clone();
	//进行二值化处理,选择30,200.0为阈值
	threshold(imag, result, 30, 200.0, CV_THRESH_BINARY);
	namedWindow("二值化图像");
	imshow("二值化图像", result);
	waitKey();
	return 0;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OpenCV是一个非常强大的计算机视觉库,提供了许多图像处理和计算机视觉算法,其中包括图像预处理。以下是一些OpenCV图像预处理技术: 1. 图像缩放和裁剪 ```python img = cv2.imread('image.jpg') resized_img = cv2.resize(img, (new_width, new_height)) # 缩放 cropped_img = img[y:y+h, x:x+w] # 裁剪 ``` 2. 图像的色彩空间转换 ```python img = cv2.imread('image.jpg') gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # BGR转灰度图 hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # BGR转HSV ``` 3. 图像平滑处理 ```python img = cv2.imread('image.jpg') blurred_img = cv2.GaussianBlur(img, (ksize, ksize), sigmaX) # 高斯模糊 ``` 4. 边缘检测 ```python img = cv2.imread('image.jpg') canny_img = cv2.Canny(img, threshold1, threshold2) # Canny边缘检测 ``` 5. 图像阈值处理 ```python img = cv2.imread('image.jpg') gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray_img, thresh_value, max_value, cv2.THRESH_BINARY) # 二值化 ``` 6. 形态学操作 ```python img = cv2.imread('image.jpg') kernel = np.ones((ksize, ksize), np.uint8) # 创建卷积核 erosion_img = cv2.erode(img, kernel, iterations=1) # 腐蚀操作 dilation_img = cv2.dilate(img, kernel, iterations=1) # 膨胀操作 opening_img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) # 开运算 closing_img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) # 闭运算 ``` 7. 直方图均衡化 ```python img = cv2.imread('image.jpg') gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) equalized_img = cv2.equalizeHist(gray_img) # 直方图均衡化 ``` 以上是OpenCV图像预处理技术的一些例子,更多高级操作可以查看OpenCV官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w要变强

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值