img= imread('2.jpg');%读取图像
imagebeffor=rgb2gray(img);%转为灰度图像
figure;
imshow(image); title('滤波后的图像');%显示图像
level=graythresh(image);%计算全局阈值
imageth=im2bw(image,level);%二值化
figure;
imshow(imageth); title('圆检测图像--二值化');%显示图像
axis on
xlabel x
ylabel y%画坐标
Rmin = 50;%搜索的圆最小半径
Rmax = 300;%搜索的圆最大半径
[centersBright, radiiBright] = imfindcircles(imageth,[Rmin Rmax],'ObjectPolarity','bright','Sensitivity',0.95);
viscircles(centersBright, radiiBright,'EdgeColor','b');%画出圆
viscircles(centersBright, 0.5*radiiBright,'EdgeColor','b');%画出搜索指针路径
viscircles(centersBright, 1,'EdgeColor','b');%画圆心
locationx=0;
locationy=0;
count=0;
angle=0;
for j=0:0.05:2*pi
x=centersBright(2)+0.5*radiiBright*cos(j);
y=centersBright(1)+0.5*radiiBright*sin(j);
x=int32(x);
y=int32(y);
if imageth(x,y)==1%如果遇到白色区域,即为指针位置
viscircles([y,x], 1,'EdgeColor','g');
locationx=locationx+x;
locationy=locationy+y;
count=count+1;
angle=angle
提取仪表盘指针位置
最新推荐文章于 2025-06-14 14:34:50 发布