这是绘制矩形的功能,为参数提供相应的值
void rectangle(Mat& img, Point pt1, Point pt2,const Scalar& color, int thickness=1,int lineType=8, int shift=0);
Run Code Online (Sandbox Code Playgroud)
用户可以使用此功能通过鼠标设置ROI,在Templte Matching应用程序中在检测到的匹配上绘制矩形.我的问题是,第二和第三个参数是这里的点数.如果用户想要获得第1点和第2点值以进行进一步处理,如何获得?如何打印两个点值?!指向double或int转换?!
任何人,清除我的怀疑.在此先感谢您的帮助!!
更新:
void mouseHandler(int event, int x, int y, int flags, void* param)
{
if (event == CV_EVENT_LBUTTONDOWN && !drag)
{
/* left button clicked. ROI selection begins */
point1 = Point(x,y);
drag = 1;
}
if (event == CV_EVENT_MOUSEMOVE && drag)
{
/* mouse dragged. ROI being selected */
Mat img1 = mod_tempimg.clone();
point2 = Point(x, y);
rectangle(img1, point1, point2, CV_RGB(255, 0, 0), 1, 8, 0);
imshow("image", img1);
}
if (event == CV_EVENT_LBUTTONUP && drag)
{
Mat img2=mod_tempimg.clone();
point2 = Point(x, y);
rect = Rect(point1.x,point1.y,x-point1.x,y-point1.y);
drag = 0;
roiImg = mod_tempimg(rect1);
imshow("image", img2);
}
if (event == CV_EVENT_LBUTTONUP)
{
/* ROI selected */
select_flag = 1;
drag = 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如何从这一行检索Point值?!
rect = Rect(point1.x,point1.y,x-point1.x,y-point1.y);
Run Code Online (Sandbox Code Playgroud)
如果我知道有助于找到rect角度的值.
当您编写用于绘制2个点矩形的程序时,您可以获得积分.
打印点: cout << pt1
打印点的x值和y值: cout << pt1.x << pt1.y
明确分配x值: pt1.x = 0
获取某些点的像素强度:image.at<uchar>( pt1) [对于灰度图像]
即使在更新后,我也不清楚这个问题。我不确定你到底在问什么。无论如何,据我了解,您正在此处创建一个矩形对象:
rect = Rect(point1.x,point1.y,x-point1.x,y-point1.y);
Run Code Online (Sandbox Code Playgroud)
并且您想稍后获得 rect 的角点。
rect.tl()给出左上角点并 rect.br()给出右下角点。您还可以通过以下方式获取角的 x 和 y 值:rect.tl().x or rect.br().y
我不知道“找到矩形的角度”是什么意思。矩形有 90 度角。
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |