OpenCV 指针仪表盘参数读取(二) 预处理

本文将从图像的预处理部分进行叙述,包括图片的读入,模板匹配,灰度化,中值滤波四个部分。

图片读入

为保证后续对图片的处理方便,这里的初步设计是希望在主程序入口对程序进行操作,故提前定义如窗口名,文件名等信息(图片的索引是在与cpp文件的同文件夹下),代码如下:

// Define Window Name
char window_name[] = "Demo";

// Define File Path
char src_image_path[] = "11.jpg";
char template_path[] = "05.jpg";

// Create a named window with the name of the file
cvNamedWindow(window_name);

// Define Variables
Mat src_img, template_img, midd_img, midd_line_img,gray_img, dst_img;

// Load the image from the given file name
src_img = imread(src_image_path, 1);
template_img = imread(template_path, 1);


namedWindow(window_name, CV_WINDOW_NORMAL);
moveWindow(window_name, 100, 100);
imshow(window_name, src_img);
	
waitKey(0);

由于后续将使用模板匹配的方法,故在定义时就将模板预先读入进来。

模板匹配

模板匹

OpenCV是一个强大的计算机视觉库,可以用于图像处理和分析。要使用指针仪表盘读取功能,需要以下步骤: 1. 加载图像:使用OpenCV函数读取仪表盘图像并将其存储为Mat对象。 2. 预处理图像:使用图像处理技术,如灰度转换、平滑和值化,以便更好地识别仪表盘指针。 3. 检测指针:使用霍夫变换检测仪表盘指针。这将返回指针的位置和角度。 4. 计算度数:根据指针的位置和角度计算出指针所指示的度数。 下面是一个使用OpenCV进行指针仪表盘读取的示例代码: ```python import cv2 import math # 读取图像 img = cv2.imread('dashboard.jpg') # 灰度转换 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 平滑处理 blur = cv2.GaussianBlur(gray, (5, 5), 0) # 值化 ret, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # 检测圆形轮廓 circles = cv2.HoughCircles(thresh, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0) # 获取圆形轮廓 if circles is not None: circles = np.round(circles[0, :]).astype('int') for (x, y, r) in circles: # 绘制圆形轮廓 cv2.circle(img, (x, y), r, (0, 255, 0), 2) # 获取指针位置 pointer_x = int(x + r * math.cos(math.radians(-90))) pointer_y = int(y - r * math.sin(math.radians(-90))) # 绘制指针 cv2.line(img, (x, y), (pointer_x, pointer_y), (0, 0, 255), 2) # 计算度数 degree = int((math.atan2(y - pointer_y, pointer_x - x) * 180 / math.pi) + 180) print('degree:', degree) cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个示例中,我们首先读取指针仪表盘的图像,然后使用OpenCV函数对其进行了预处理和检测。最后,我们计算了指针所指示的度数,并将其打印出来。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值