1. 程式人生 > >Dlib與OpenCV圖片轉換

Dlib與OpenCV圖片轉換

本人知乎號:Ngxin

轉載請註明出處!

在做人臉關鍵點檢測時候碰到Dlib的圖片格式轉換以及Dlib與OpenCV圖片格式的互轉,找了不少資料,現總結如下:

1:首先,Dlib圖片格式與OpenCV還是有一定區別的,dlib是以dlib::array2d的形式存在,而oepncv是以cv::Mat的形式存在,關於opencv影象之間的轉換,網上有很多資料,這裡不再贅述,僅介紹一下dlib的圖片格式轉換以及dlib與opencv之間圖片格式的互轉。

2:dlib中讀取圖片:

dlib::array2d<dlib::rgb_pixel> img_rgb;
dlib::load_image(img_rgb, "test_image.jpg");

3:dlib rgb圖片轉換成灰度圖片:

dlib::array2d<unsigned char> img_gray;
dlib::assign_image(img_gray, img_rgb);

4:dlib轉換成OpenCV圖片:

#include <dlib/opencv.h>
#include <opencv2/opencv.hpp>
cv::Mat img = dlib::toMat(img_gray);

5:OpenCV轉Dlib:

#include<dlib/opencv.h>
#include<opencv2/opencv.hpp>
cv::Mat img =cv::imread("test_image.jpg");
dlib::cv_image<rgb_pixel>=dlib_img(img);

6:Opencv灰度圖片轉Dlib灰度圖片:

#include<dlib/opencv.h>
#include<opencv2/opencv.hpp>
cv::gray_img
cv::Mat rgb_img = cv::imread("test_image.jpg");
cv::cvtcolor(rgb_img,gray_img,cv::COLOR_BGR2GRAY);
dlib::cv_image(uchar)=dlib_gray_img(gray_img);

參考連結: