使用cv_image实现dlib pyramid_up
implementing dlib pyramid_up with cv_image
我试图使用dlib的函数pyramid_up在一个开放的cv Mat图像上,用dlib库的cv_image包装器包装。
cv::Mat & src
cv_image<rgb_pixel> cimg(src);
pyramid_up(cimg);
cv::Mat
和dlib::cv_image
能很好地协同工作,dlib::array2d<rgb_pixel>
和dlib::pyramid_up
也能很好地协同工作。但是,当组合使用时,我从dlibs插补.h中得到一个错误列表,这些错误都说could not deduce template argument for..
任何想法?
编辑:这个问题是很久以前的事了,我不记得预期的目的,所以不能说解决方案是否有效。特蕾莎的建议似乎很可靠,如果将来发现的话,可以尝试一下。
你解决了吗?我成功地像这样使用了pyramid_up:
cv::Mat & src
array2d<bgr_pixel> img;
assign_image(img, cv_image<bgr_pixel>(src));
您可以使用pyrUp OpenCV函数代替。看起来很像……这里有一些ref: OpenCv 3.0教程.
//测试通过
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <unistd.h>
#include <sys/time.h>
#include <iostream>
#include <fstream>
#include "opencv2/opencv.hpp"
#include "dlib/opencv.h"
#include "dlib/array2d.h"
#include "dlib/image_io.h"
#include "dlib/image_processing.h"
#include "dlib/image_transforms.h"
#include "dlib/gui_widgets.h"
using namespace cv;
using namespace dlib;
typedef scan_fhog_pyramid<pyramid_down<6>> image_scanner_type;
int main(void)
{
Mat src_bgr;
object_detector<image_scanner_type> detector;
array2d<bgr_pixel> img2d;
std::vector<dlib::rectangle> dlib_rects;
image_window iwin;
std::ifstream svmbase("./detector.svm", std::ios::binary);
deserialize(detector, svmbase);
//load_image(img2d, "./uschwaa2.png");
//pyramid_up(img2d);
src_bgr = imread("./uschwaa2.png"); //same as load_image
cv::resize(src_bgr,src_bgr,Size(256,256)); //same as pyramid_up assume original 128 x 128
assign_image(img2d, cv_image<bgr_pixel>(src_bgr));
dlib_rects = detector(img2d);
iwin.clear_overlay();
iwin.set_image(img2d);
iwin.add_overlay(dlib_rects, rgb_pixel(255,0,0));
usleep(3000000);
return EXIT_SUCCESS;
}
我用这段代码来解决这个问题
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
cerr << "Unable to connect to camera" << endl;
getchar();
}
cv::Mat temp;
cap.read(temp);
cv::imwrite("img/Latest.jpg", temp); // saving image to folder using openCV
matrix<rgb_pixel> test2;
load_image(test2, "img/Latest.jpg");
pyramid_up(test2);
它为我工作,这个想法是保存图像并再次加载为matrix<rgb_pixel>
,以便pyramid_up()
可以处理它。
注意:如果你在实时视频中运行识别,我认为这不会有帮助。
相关文章:
- 如何让C++'tally up'结果并制定计划?
- QGraphicsItems not showing up QGraphicsScene
- OpenGL通常"Up"方向?
- 使用外部依赖项运行 VC++ 单元测试时"Failed to set up execution context"
- 带有"up-"和"center-vec3"参数的glm::rotate()的有效替代方案?
- Cin messing up SetConsoleTitle
- 当您通过Qt小部件打开文件时,是否可以'pop-up'文件?
- "Cleaning up"嵌套的 if 语句
- ISO C++禁止在我的代码中使用可变长度数组 'up' [-Wvla]
- Speeding up makefile for SDL2
- setting up sfml
- QTableView does not show up
- CDT 在以下期间发生内部错误: "Setting up indexer"
- Setting up GLEW with QGLWidget
- c++ setting up for sqlite3
- Glib::Regex picking up TextTag-s
- Splitting up classes c++
- Qt 5.4 中的"No debugger set up"
- QSystemTrayIcon does not show up
- Arduino locks up