基于OpenCV实现的物体定位系统Word文件下载.docx
- 文档编号:17701830
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:12
- 大小:1.56MB
基于OpenCV实现的物体定位系统Word文件下载.docx
《基于OpenCV实现的物体定位系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于OpenCV实现的物体定位系统Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
srcImg,
midImg,
dstImg;
11.
srcImg
=
imread("
hehe.jpg"
);
12.
xianshi
srcImg.clone();
13.
redChannel;
14.
namedWindow("
【原图】"
WINDOW_NORMAL);
15.
imshow("
srcImg);
16.
grayImg;
17.
vector<
Mat>
channels;
18.
split(srcImg,
channels);
19.
//cvtColor(srcImg,grayImg,COLOR_BGR2GRAY);
20.
grayImg
channels.at(0);
21.
redChannel
channels.at
(2);
22.
【灰度图】"
23.
grayImg);
24.
//均值滤波
25.
blur(grayImg,
grayImg,
Size(20,
20),
Point(-1,
-1));
26.
【均值滤波后】"
27.
28.
//转化为二值图
29.
midImg1
grayImg.clone();
30.
int
rowNumber
midImg1.rows;
31.
colNumber
midImg1.cols;
32.
33.
for
(int
i
0;
i<
rowNumber;
i++)
34.
{
35.
uchar*
data
midImg1.ptr<
uchar>
(i);
//取第i行的首地址
36.
redData
redChannel.ptr<
37.
j
j<
colNumber;
j++)
38.
39.
if
(data[j]>
BIN_DIV&
&
redData[j]<
*2/
3)
40.
data[j]
255;
41.
else
42.
43.
}
44.
45.
【二值图】"
46.
midImg1);
47.
midImg2
midImg1.clone();
48.
element
getStructuringElement(MORPH_RECT,
Size(40,
40));
49.
morphologyEx(midImg1,
midImg2,
MORPH_CLOSE,
element);
50.
【闭运算后】"
51.
midImg2);
52.
cout
<
"
midImg1.channel="
midImg1.channels()
endl;
53.
mdiImg1.depth"
midImg1.depth()
54.
//查找图像轮廓
55.
midImg3
Mat:
:
zeros(midImg2.rows,
midImg2.cols,
CV_8UC3);
56.
Point>
>
contours;
57.
Vec4i>
hierarchy;
58.
findContours(midImg2,
contours,
hierarchy,
RETR_CCOMP,
CHAIN_APPROX_SIMPLE);
59.
index
60.
(;
hierarchy[index][0])
61.
62.
Scalar
color(255,
255,
255);
63.
drawContours(midImg3,
index,
color,
NULL,
8,
hierarchy);
64.
65.
【轮廓图】"
66.
midImg3);
67.
midImg4
midImg3.clone();
68.
//创建包围轮廓的矩形边界
69.
contours.size();
70.
71.
//每个轮廓
72.
points
contours[i];
73.
//对给定的2D点集,寻找最小面积的包围矩形
74.
RotatedRect
box
minAreaRect(Mat(points));
75.
Point2f
vertex[4];
76.
box.points(vertex);
77.
//绘制出最小面积的包围矩形
78.
line(xianshi,
vertex[0],
vertex[1],
Scalar(100,
200,
211),
6,
CV_AA);
79.
vertex[2],
80.
vertex[3],
81.
82.
//绘制中心的光标
83.
Point
s1,
l,
r,
u,
d;
84.
s1.x
(vertex[0].x
+
vertex[2].x)
/
2.0;
85.
s1.y
(vertex[0].y
vertex[2].y)
86.
l.x
-
10;
87.
l.y
s1.y;
88.
89.
r.x
90.
r.y
91.
92.
u.x
s1.x;
93.
u.y
94.
95.
d.x
96.
d.y
97.
2,
98.
d,
99.
100.
【绘制的最小面积矩形】"
101.
xianshi);
102.
waitKey(0);
103.
return
104.}
OpenCV3.0版本
120
srcImg=imread("
haha.jpg"
xianshi=srcImg.clone();
WINDOW_NORMAL);
srcImg);
split(srcImg,channels);
grayImg=channels.at(0);
redChannel=channels.at
(2);
grayImg);
blur(grayImg,grayImg,Size(20,20),Point(-1,-1));
midImg1=grayImg.clone();
rowNumber=midImg1.rows;
colNumber=midImg1.cols;
for(int
i=0;
data=midImg1.ptr<
redData=redChannel.ptr<
j=0;
if(data[j]>
BIN_DIV/2)
data[j]=0;
data[j]=255;
midImg1);
midImg2=midImg1.clone();
element=getStructuringElement(MORPH_RECT,Size(20,20));
morphologyEx(midImg1,midImg2,MORPH_OPEN,element);
【开运算后】"
midImg2);
cout<
midImg1.channels()<
midImg1.depth()<
midImg3=Mat:
zeros(midImg2.rows,midImg2.cols,CV_8UC3);
findContours(midImg2,contours,hierarchy,RETR_CCOMP,CHAIN_APPROX_SIMPLE);
index=0;
for(;
index>
=0;
index=hierarchy[index][0])
color(255,255,255);
drawContours(midImg3,contours,index,color,NULL,8,hierarchy);
midImg3);
midImg4=midImg3.clone();
points=contours[i];
box=minAreaRect(Mat(points));
line(xianshi,vertex[0],vertex[1],Scalar(100,200,211),6,LINE_AA);
line(xianshi,vertex[1],vertex[2],Scalar(100,200,211),6,LINE_AA);
line(xianshi,vertex[2],vertex[3],Scalar(100,200,211),6,LINE_AA);
line(xianshi,vertex[3],vertex[0],Scalar(100,200,211),6,LINE_AA);
s1,l,r,u,d;
s1.x=(vertex[0].x+vertex[2].x)/2.0;
s1.y=(vertex[0].y+vertex[2].y)/2.0;
l.x=s1.x-10;
l.y=s1.y;
r.x=s1.x+10;
r.y=s1.y;
u.x=s1.x;
u.y=s1.y-10;
d.x=s1.x;
d.y=s1.y+10;
line(xianshi,l,r,Scalar(100,200,211),2,LINE_AA);
line(xianshi,u,d,Scalar(100,200,211),2,LINE_AA);
xianshi);
103.}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 OpenCV 实现 物体 定位 系统