Convert OpenCV's Rect to dlib's rectangle?

Related searches

I use OpenCV's face detector with C++ for dlib's face alignment instead of dlib's detector because of slow speed. To use dlib's face alignment, I have to pass the detection rectangle to the face alignment function. However, I cannot do that even though dlib's detector is ok. Because std::vector<rectangle> detsis used in dlib's sample code, I tried to assign as shown below, but I couldn't. Note that detect_rect is face detection rectangle by OpenCV's detector.

dets[0].l = detect_rect.left;
dets[0].t =;
dets[0].r = detect_rect.right;
dets[0].b = detect_rect.bottom;

Could you tell me any advice?

Thank you.

It has to be noted that OpenCV uses the following definition:

OpenCV typically assumes that the top and left boundary of the rectangle are inclusive, while the right and bottom boundaries are not.

dlib's definition includes all boundaries, so the conversion function has to take care of shifting bottom right corner by 1.

Here's a function that I have in my Utils.h

static cv::Rect dlibRectangleToOpenCV(dlib::rectangle r)
  return cv::Rect(cv::Point2i(r.left(),, cv::Point2i(r.right() + 1, r.bottom() + 1));

And the other way around:

static dlib::rectangle openCVRectToDlib(cv::Rect r)
  return dlib::rectangle((long), (long), (long) - 1, (long) - 1);

Changing Colorspaces, In this tutorial, you will learn how to convert images from one color-space to another, like BGR \leftrightarrow Gray, BGR \leftrightarrow HSV, etc. In addition to � OpenCV version: 2.4.10. Download cv2.pyd; Windows 10; USB webcam; Python Extension for Reading Barcode from OpenCV Image Data Installation. Copy DynamsoftBarcodeReaderx86.dll and cv2.pyd to Python27\Lib\site-packages. What is the type of the frame data that output by OpenCV? To convert the image data, we have to know what type it is. The type

The idea is right, but you're doing wrong in accessing cv::Rect's elements.

It should be:

dets[0].l = detect_rect.x;
dets[0].t = detect_rect.y;
dets[0].r = detect_rect.x + detect_rect.width;
dets[0].b = detect_rect.y + detect_rect.height;

convert Matrix of type CV_32FC1 to CV_64FC1, Okay, I'm a dimwit. Here is how it goes: There is the function convertTo that does exactly what I want. Thanks for matrix type conversion in opencv for pointing� Convert BGR and RGB with OpenCV function cvtColor. Various color spaces such as RGB, BGR, HSV can be mutually converted using OpenCV function cvtColor (). dst = cv2.cvtColor(src, code) Refer to the following document for the value to be specified for the parameter code. OpenCV: Miscellaneous Image Transformations.

This answer is for Python. You can use the construct of dlib rectangle wiz. dlib.rectangle(). You can use the OpenCV's facial bounding boxes x = face[0] y = face[1] w = face[2] h = face[3] and map them to dlib.rectangle(x, y, w, h). Then you can call predictor code shape = predictor(img, rect)

Changing Colorspaces — OpenCV-Python Tutorials 1 documentation, For color conversion, we use the function cv2. Now we know how to convert BGR image to HSV, we can use this to extract a colored object. In HSV, it is more � First, you need to setup your Python Environment with OpenCV. You can easily do it by following Life2Coding’s tutorial on YouTube: Linking OpenCV 3 with Python 3. Goals: In this tutorial, I will show you how to merge or convert several frames to a video by combing the image frames using OpenCV library and Python coding.

Convert BGR and RGB with Python, OpenCV (cvtColor), When the image file is read with the OpenCV function imread(), the order of colors is BGR (blue, green, red). On the other hand, in Pillow, the� To convert from OpenCV image to PIL image use: import cv2 import numpy as np from PIL import Image opencv_image=cv2.imread("demo2.jpg") # open image using openCV2 # convert from openCV2 to PIL. Notice the COLOR_BGR2RGB which means that # the color is converted from BGR to RGB pil_image=Image.fromarray( cv2.cvtColor(opencv_image, cv2.COLOR_BGR2RGB) )

Python OpenCV: Converting an image to gray scale – techtutorialsx, To get started, we need to import the cv2 module, which will make available the functionalities needed to read the original image and to convert it� C++ version only: intensity.val[0] contains a value from 0 to 255. Note the ordering of x and y. Since in OpenCV images are represented by the same structure as matrices, we use the same convention for both cases - the 0-based row index (or y-coordinate) goes first and the 0-based column index (or x-coordinate) follows it.

Because both OpenCV and Qt provide multiple data formats for images, we need to do different conversions depending on their internal layout. In this case I am interested in three OpenCV image formats: CV_8UC4 (8-bit unsigned, 4 channels), CV_8UC3 (8-bit unsigned, 3 channels), and CV_8UC1 (8-bit unsigned, 1 channel – grayscale).

  • dlib uses .l .t .r .b? Can you explain how they must be interpreted? Is it maybe the distance from those image borders (so some kind of cropping)? If yes you'll have to use: .l = rect.x; .t = rect.y; .r = imageWidth - (rect.x+rect.width); .b = imageHeight - (rect.y+rect.height);
  • Dlibs face detector is not slow. Are you sure you ran in release mode?
  • Sorry, I could solve by myself! The next codes work! rectangle rect(left, top, right, bottom); dets.push_back(rect); Thank you!
  • Thank you for your advice. I could solve by myself! The next codes work! rectangle rect(left, top, right, bottom); dets.push_back(rect); I think my codes are the same to your code. Thank you for your answer!
  • Thank you for your advice. I could solve by myself! The next codes work! rectangle rect(left, top, right, bottom); dets.push_back(rect); Thank you!