【问题标题】:drawing rectangle in an image in OpenCV在 OpenCV 中的图像中绘制矩形
【发布时间】:2013-07-30 19:21:31
【问题描述】:

要找出灰度图像的最大和最小像素值是

     IplImage* src = cvLoadImage(argv[1],0);

     double min_val;
     double max_val;
     CvPoint minLoc;
     CvPoint maxLoc;
     cvMinMaxLoc(dst,&minVal,&maxVal, &minLoc, &maxLoc);
     printf("Min val %f \n",minVal);
     printf("Max Val %f \n",maxVal);
     printf("Min location %d \n",minLoc);
     printf("Max location %d \n",maxLoc);

我正在使用 OpenCV C API。现在我想用cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int lineType=8, int shift=0)在最大像素位置(maxLoc)周围画一个矩形,但我不知道矩形顶点的参数是什么,即pt1和pt2。其他 3 个参数是否始终为 1、8 和 0。任何人都可以帮我处理这些参数。

【问题讨论】:

  • 点坐标将只是 [maxLoc.x-w/2 ; maxLoc.y-h/2] [maxLoc.x+w/2 ; maxLoc.y+h/2]

标签: c opencv image-processing


【解决方案1】:

矩形的两个角会在最大像素位置上下移动 1 个像素。

所以cvRectangle(img, minLoc+cvPoint(- 1,- 1), minLoc+cvPoint(1,1), 255, 2) 将在该点周围绘制一个 1px 的矩形,矩形的边框厚度为 2px

是的,如果没有指定其他参数,则默认为它们的值 1,8,0

【讨论】:

  • 当我在函数'int main(int, char**)'中使用你的代码时,它向我显示以下错误:experiment8.cpp:161:43: error: no match for 'operator+' in 'minLoc.CvPoint::x + cvPoint(-0x00000000000000001, -0x00000000000000001)'experiment8.cpp:161:66: error: no match for 'operator+' in 'minLoc.CvPoint::y + cvPoint(1, 1)'
  • 改用 cvPoint(minLoc.x-1,minLoc.y-1)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
相关资源
最近更新 更多