画像の幅と高さに応じてopencvで長方形を描画したい(つまり、静的な値を指定したくないcvRectangle
)画像の大小の領域の大部分をカバーする長方形を描画したい各画像で最大の長方形を描きたい、ありがとう
質問する
14444 次
2 に答える
1
たぶん、パーセンテージディメンションを使用したいですか?
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ピクセルになり、画像の中央に配置されます。
于 2012-05-17T05:25:01.607 に答える
1
私はそれを試しました、そしてそれはうまくいきます
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)));
于 2012-05-17T10:29:37.807 に答える