C语言 如何根据图像宽度和高度在opencv中动态绘制矩形



我想根据图像宽度和高度在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像素,并且它将位于图像的中心。

我已经尝试过了,效果很好

IplImage *img=cvLoadImage(fileName,CV_LOAD_IMAGE_COLOR);
             int imageWidth=img->width-150;
             int imageHeight=img->height-150;
             int imageSize=img->nSize;
             cvRectangle(img,cvPoint(imageWidth,imageHeight), cvPoint(50, 50),cvScalar(0, 255, 0, 0),1,8,0);
             cvSetImageROI(img,cvRect(50,50,(imageWidth-50),(imageHeight-50))); 

最新更新