代码如下:
//testRotateRect.cpp:定义控制台应用程序的入口点。
02 //
03 #include"stdafx.h"
04 #include"opencv2/opencv.hpp"
05 usingnamespacestd
06 usingnamespacecv
07 int_tmain(intargc,_TCHAR*argv[])
08 {
09 Matimage(200,200,CV_8UC3,Scalar(0))
10 掘信中 RotatedRectrRect=RotatedRect(Point2f(100,100),Size2f(100,50),30)//定义一个旋转矩形
11 坦销 Point2fvertices[4]
12 rRect.points(vertices)//提取旋转矩形的四判山个角点
13 for(inti=0i<4i++)
14 {
15 line(image,vertices[i],vertices[(i+1)%4],Scalar(0,255,0))//四个角点连成线,最终形成旋转的矩形。
16 }
17 Matimg=imread("d:/fff.jpg")
18 imshow("ran",image)
19 waitKey()
20 return0
21 }
ROI就是感兴趣区域,在一幅图像上你对那一块图老歼像感兴趣就只对感兴趣的这一块区域进行处理。那么怎么得到感兴侍链冲趣区域呢,就要用cvSetImageROI在图像上标唤猛定感兴趣区域,以后在对src进行的处理实质都是仅对src上这个ROI区域做的处理, 处理完成后一定要记得释放设置的感兴趣区域。很简单,1 使哗脊用RotatedRect minAreaRect(InputArray points)获取这个唤慎旋转矩形
2 将其四角存到某vector<Point>里面,变成一个轮廓,怎么获取四角?参见http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=rotatedrect#RotatedRect
你一定能搞出来。
3 然后遍历内部那个轮廓的各个点,然后使用pointPolygonTest这个opencv函数确定此乱链渗点与四边形的距离。
4 要注意的是因为点在轮廓内部,所获距离为负数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)