я хочу нарисовать прямоугольник в opencv в соответствии с шириной и высотой изображения (т.е. я не хочу давать статические значения cvRectangle
) я хочу нарисовать прямоугольник, который покрывает большую часть области любого изображения, большого или маленького в другом слова, я хочу нарисовать самый большой прямоугольник на каждом изображении, спасибо
Как динамически рисовать прямоугольник в opencv в соответствии с шириной и высотой изображения?
comment
Вы имеете в виду просто получить ширину и высоту изображения и передать их в cvRectangle для каждого изображения ??
- person mathematical.coffee   schedule 17.05.2012
comment
хорошо, спасибо @mathematical.coffee, я обновил свой вопрос соответствующим ответом.
- person Java Player   schedule 17.05.2012
comment
Если вы ответили на свой вопрос, не стесняйтесь опубликовать ответ и принять его.
- person mathematical.coffee   schedule 17.05.2012
Ответы (2)
Может быть, вы хотели бы использовать процентные размеры?
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 пикселей, и он будет в центре вашего изображения.
person
Larry Cinnabar
schedule
17.05.2012
я пробовал это, и это работает хорошо
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)));
person
Java Player
schedule
17.05.2012