c - opencv中如何根据图像宽高动态绘制矩形?

标签 c image-processing opencv roi

我想根据图像的宽度和高度在opencv中绘制一个矩形(即我不想给cvRectangle提供静态值)我想绘制一个覆盖大部分的矩形任何图像的区域大小,换句话说,我想在每个图像中绘制最大的矩形,谢谢

最佳答案

也许您想使用百分比尺寸?

IplImage *img=cvLoadImage(fileName,CV_LOAD_IMAGE_COLOR);

int imageWidth  = img->width;
int imageHeight = img->height;
int imageSize   = img->nSize;

int ratio     = 90; // our ROI will be 90% of our input image

int roiWidth  = (int)(imageWidth*ratio/100);
int roiHeight = (int)(imageHeight*ratio/100);

// offsets from image borders
int dw = (int) (imageWidth-roiWidth)/2;
int dh = (int) (imageHeight-roiHeight)/2;

cvRectangle(img,
            cvPoint(dw,dh),                     // South-West point 
            cvPoint(roiWidth+dw, roiHeight+dh), // North-East point
            cvScalar(0, 255, 0, 0), 
            1, 8, 0);

cvSetImageROI(img,cvRect(dw,dh,roiWidth,roiHeight));

所以,现在,如果您将比率设置为 90,并且您的输入图像为 1000x1000 像素,那么您的 ROI 将为 900x900 像素,并且它将位于图像的中心。

关于c - opencv中如何根据图像宽高动态绘制矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10628304/

相关文章:

c - 什么会导致 OpenGL 中的多边形乱序渲染?

python - OpenCV2中connectedComponents的统计信息

opencv - OpenCV Hough检测找到内圈

python - cx_Freeze 未检测到 cv2

使用 fork() 的并发进程

c - Makefile 抛出 undefined reference 错误

c - C中的递归后序遍历和sprintf

java - OpenCV Java |在二进制图像中按区域删除 Blob

matlab - 寻找旋转图像的边界

c++ - 在 OpenCV 中创建 2D LoG 内核,就像在 Matlab 中创建 fspecial