Mat和Dlib变量类型转换

本文介绍如何在OpenCV与DLib库之间转换图像数据类型,包括从OpenCV的Mat到DLib的matrix<dlib::rgb_pixel>及array2d<dlib::bgr_pixel>等。同时提供了具体的代码示例,帮助读者理解不同数据类型的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mat转matrix<dlib::rgb_pixel>

cv::Mat frame = cv::imread("123.jpg");
matrix<dlib::rgb_pixel> img;
assign_image(img,cv_image<rgb_pixel>(frame));

值得注意的地方:matrix<dlib::rgb_pixel>img不能放进vector<matrix<dlib::rgb_pixel>>img,会报错!

array2d<dlib::bgr_pixel>转Mat

方法一:
dlib::array2d<dlib::bgr_pixel> img_bgr;//使用dlib载入彩色的RGB图像      
dlib::load_image(img_bgr, "test_image.jpg");   
cv::Mat img = dlib::toMat(img_bgr);//这样图片不失真

方法二:

cv::Mat temp_Roi;
temp_Roi=imread("1.jpg");
array2d< bgr_pixel> img(temp_Roi.rows, temp_Roi.cols);
for (int i = 0; i < temp_Roi.rows; i++)
{
    for (int j = 0; j < temp_Roi.cols; j++)
    {
        img[i][j].blue = temp_Roi.at< cv::Vec3b>(i, j)[0];
        img[i][j].green = temp_Roi.at< cv::Vec3b>(i, j)[1];
        img[i][j].red = temp_Roi.at< cv::Vec3b>(i, j)[2];
    }
}点击打开链接

Mat转cv_image<rgb_pixel>

cv::Mat img = cv::imread("test_image.jpg")  
dlib::cv_image<rgb_pixel> dlib_img(img); 

Mat转cv_image<bgr_pixel>

cv::Mat temp;
cv_image<bgr_pixel> cimg(temp);

Opencv的rect转dlib的rect

dlib::rectangle dlibRect((long)opencvRect.tl().x, (long)opencvRect.tl().y, (long)opencvRect.br().x - 1, (long)opencvRect.br().y - 1);

Mat转dlib array2d

#include "dlib/opencv/cv_image.h"  //需要的头文件
cv::Mat ori_rgb_mat,photo_gray;
// RGB  
dlib::array2d<dlib::bgr_pixel> dlib_image;  
dlib::assign_image(dlib_image, dlib::cv_image<dlib::bgr_pixel>(ori_rgb_mat));  
// Gray  
//dlib::array2d<unsigned char> dlibImageGray;  
//dlib::assign_image(dlibImageGray, dlib::cv_image<unsigned char>(photo_gray));



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值