本文整理汇总了C++中cv::Rect类的典型用法代码示例。如果您正苦于以下问题:C++ Rect类的具体用法?C++ Rect怎么用?C++ Rect使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Rect类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addMouseObject
bool GeoMapEditor::addMouseObject( // пытаемся добавить новый объект вытянув или кликнув мышкой
cv::Rect& rect, // note: in-out -- подкручиваем ректангл по законам первого рождения для данного объекта
int flags )
{
if (objType() == "AGM_Segm")
{
Point xyTL = rect.tl();
Point xyBR = rect.br();
GeoSheet& sh = gm.sheets[ cur_sheet ];
Point2d enTL = sh.xy2en( xyTL );
Point2d enBR = sh.xy2en( xyBR );
AGM_Segm* ps = new AGM_Segm(enTL, enBR);
gm.objects.push_back(cv::Ptr<AGM_Segm>(ps));
}
else
{
Point xy = center( rect );
GeoSheet& sh = gm.sheets[ cur_sheet ];
Point2d en = sh.xy2en( xy );
AGM_Point* pp = new AGM_Point( en );
gm.objects.push_back(cv::Ptr<AGM_Point>(pp));
}
return true;
};
示例2: checkColision
static bool checkColision(const cv::Rect &a, const cv::Rect &b){
if (b.contains(a.tl())) return true;
if (b.contains(a.br())) return true;
if (b.contains(cv::Point(a.x+a.width,a.y))) return true;
if (b.contains(cv::Point(a.x,a.y+a.height))) return true;
return false;
}
示例3: setRegion
void LevelTracker::setRegion(const cv::Rect &roi)
{
topLeft=roi.tl();
bottonRight=roi.br();
if(topLeft.x<bottonRight.x && topLeft.y<bottonRight.y)
regOk=true;
}
示例4: findTop
bool findTop(cv::Point& top, int& topVal, cv::Mat* src, cv::Rect rect){
cv::Point res(0, 0);
int x = 0, y = 0;
bool bFound = false;
topVal = 65535;
if (!src->empty()){
try
{
for (int i = rect.tl().y; i < rect.br().y; ++i){
for (int j = rect.tl().x; j < rect.br().x; ++j){
{
Int16 curVarVec = Convert::ToInt16((src->at<Int16>(cv::Point(j, i))) * 255.0f / 8191.0f);
if (curVarVec < topVal && curVarVec > 0)
{
topVal = curVarVec;
x = j;
y = i;
bFound = true;
}
}
}
}
}
catch(...)
{
// DO NOTHING
}
}
//ht.nNose = src->at<Int16>(0,0);
if(bFound) top = cv::Point(x,y);
return bFound;
}
示例5: overlapJaccard
double overlapJaccard(cv::Rect& r1,cv::Rect& r2){
double overlap=(r1 & r2).area();
double overlapJaccard=overlap/(r1.area()+r2.area()-overlap);
return overlapJaccard;
}
示例6: center
inline static cv::Point center(const cv::Rect &rc)
{
std::vector<cv::Point> pts;
pts.push_back(rc.tl());
pts.push_back(rc.br());
return center(pts);
}
示例7: draw_box
// A litte subroutine to draw a box onto an image
//
void draw_box(cv::Mat& img, cv::Rect box) {
cv::rectangle(
img,
box.tl(),
box.br(),
cv::Scalar(0x00, 0x00, 0xff) /* red */
);
}
示例8: rect_similarity
//[0; 1] (0.5 when different_area == common_area)
inline float rect_similarity(const cv::Rect &r1, const cv::Rect &r2)
{
float common = (r1 & r2).area();
float different = (r1.area() + r2.area() - 2.0f * common);
if (different > FLT_EPSILON)
return std::min(0.5f * common / different, 1.0f);
else
return 1.0f;
}
示例9: update
void BlobPeople::update(const cv::Rect& track) {
cur = toOf(track).getCenter();
smooth.interpolate(cur, 0.5);
height = track.tl().y-track.br().y;
bottom = track.br().y;
left = track.tl().x;
right = track.br().x;
}
示例10: set
void Rectangle::set(const cv::Rect &_rect)
{
rect = _rect;
tl = _rect.tl();
br = _rect.br();
left->set(tl, cv::Point(tl.x, br.y));
top->set(tl, cv::Point(br.x, tl.y));
bottom->set(tl, cv::Point(tl.x, br.y));
right->set(cv::Point(br.x, tl.y), cv::Point(tl.x, br.y));
info.set(_rect);
}
示例11: rescale_facebox
/**
* @brief Scales and translates a facebox. Useful for converting
* between face boxes from different face detectors.
*
* To convert from V&J faceboxes to ibug faceboxes, use a scaling
* of 0.85 and a translation_y of 0.2.
* Ideally, we would learn the exact parameters from data.
*
* @param[in] facebox Input facebox.
* @param[in] scaling The input facebox will be scaled by this factor.
* @param[in] translation_y How much, in percent of the original facebox's width, the facebox will be translated in y direction. A positive value means facebox moves downwards.
* @return The rescaled facebox.
*/
cv::Rect rescale_facebox(cv::Rect facebox, float scaling, float translation_y)
{
// Assumes a square input facebox to work? (width==height)
const auto new_width = facebox.width * scaling;
const auto smaller_in_px = facebox.width - new_width;
const auto new_tl = facebox.tl() + cv::Point2i(smaller_in_px / 2.0f, smaller_in_px / 2.0f);
const auto new_br = facebox.br() - cv::Point2i(smaller_in_px / 2.0f, smaller_in_px / 2.0f);
cv::Rect rescaled_facebox(new_tl, new_br);
rescaled_facebox.y += facebox.width * translation_y;
return rescaled_facebox;
};
示例12: jaccardSimilarity
float jaccardSimilarity(cv::Rect bbox1, cv::Rect bbox2) {
cv::Vec4i bi(std::max(bbox1.x, bbox2.x), std::max(bbox1.y,bbox2.y), std::min(bbox1.br().x,bbox2.br().x), std::min(bbox1.br().y,bbox2.br().y));
int iw = bi[2] - bi[0];
int ih = bi[3] - bi[1];
if (iw > 0 && ih > 0) {
int un = (bbox1.br().x - bbox1.x) * (bbox1.br().y - bbox1.y) +
(bbox2.br().x - bbox2.x) * (bbox2.br().y - bbox2.y) - iw * ih;
return iw * ih / float(un);
}
return 0.f;
}
示例13: CallBackFunc
void CallBackFunc(int evnt, int x, int y, int flags, void* userdata) {
if (evnt == cv::EVENT_LBUTTONDOWN) {
mouseButtonDown = true;
targetSelected = false;
boundingRect = cv::Rect(0,0,0,0);
point1 = cv::Point(x,y);
cv::destroyWindow(targetName);
cv::destroyWindow(ColorTracker.getColorSquareWindowName());
targetImage.release();
}
if (evnt == cv::EVENT_MOUSEMOVE) {
if (x < 0) x = 0;
else if (x > image.cols) x = image.cols;
if (y < 0) y = 0;
else if (y > image.rows) y = image.rows;
point2 = cv::Point(x,y);
if (mouseButtonDown) {
boundingRect = cv::Rect(point1,point2);
}
cv::imshow(imageName,image);
}
if (evnt == cv::EVENT_LBUTTONUP) {
mouseButtonDown = false;
if (boundingRect.area() != 0) {
targetImage = image(calibratedRect(boundingRect));
cv::imshow(targetName, targetImage);
}
else {
boundingRect = cv::Rect(point1-cv::Point(5,5),point1+cv::Point(5,5));
targetImage = image(calibratedRect(boundingRect));
cv::imshow(targetName, targetImage);
}
targetSelected = true;
}
}
示例14: drawQuadrants
void drawQuadrants(cv::Point targetCoord) {
cv::line(image, cv::Point(0, centerPoint.y), cv::Point(frameWidth, centerPoint.y), blackColor);
cv::line(image, cv::Point(centerPoint.x, 0), cv::Point(centerPoint.x, frameHeight), blackColor);
if (targetCoord != cv::Point(999,999)) {
if (centerRectangle.contains(targetCoord)) {
targetCentered = true;
targetInQ1 = targetInQ2 = targetInQ3 = targetInQ4 = false;
highlightAllQuadrants();
}
else if (targetCoord.x >= centerPoint.x) {
if (targetCoord.y <= centerPoint.y) {
targetInQ1 = true;
targetInQ2 = targetInQ3 = targetInQ4 = targetCentered = false;
highlightQuadrant(1);
}
else if (targetCoord.y > centerPoint.y) {
targetInQ4 = true;
targetInQ1 = targetInQ2 = targetInQ3 = targetCentered = false;
highlightQuadrant(4);
}
}
else if (targetCoord.x < centerPoint.x) {
if (targetCoord.y <= centerPoint.y) {
targetInQ2 = true;
targetInQ1 = targetInQ3 = targetInQ4 = targetCentered = false;
highlightQuadrant(2);
}
else if (targetCoord.y > centerPoint.y) {
targetInQ3 = true;
targetInQ1 = targetInQ2 = targetInQ4 = targetCentered = false;
highlightQuadrant(3);
}
}
}
}
示例15: init
bool Target::init(KVConfig *cfg, int id, const cv::Rect &roi, const cv::Mat &curr_gray,
double stamp, double min_dis_5frames, int min_pts, int max_feature_pts, double qualitylevel)
{
first_rc_ = roi;
outer_.x = 0, outer_.y = 0, outer_.width = curr_gray.cols, outer_.height = curr_gray.rows;
stamp_ = stamp;
cfg_ = cfg;
id_ = id;
min_dis_5frames_ = min_dis_5frames;
min_pts_ = min_pts;
stopped_dis_ = atof(cfg->get_value("pd_target_stopped_dis", "2.0"));
//int max_features_pts = atoi(cfg->get_value("pd_max_features_pts", "300"));
int max_features_pts = 200;
PTS pts;
//cv::goodFeaturesToTrack(curr_gray(roi), pts, max_feature_pts, qualitylevel, 1.5);
hi_goodFeaturesToTrack(curr_gray(roi), pts, 200, qualitylevel, 1.5);
if ((int)pts.size() < min_pts_) {
return false;
}
l2g(pts, roi.tl());
layers_.push_back(pts);
brc_ = roi;
last_rc_ = cv::boundingRect(pts);
return true;
}