|
|
|
// This file is part of OpenCV project.
|
|
|
|
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
|
|
|
// of this distribution and at http://opencv.org/license.html.
|
|
|
|
//
|
|
|
|
// Copyright (C) 2017, Intel Corporation, all rights reserved.
|
|
|
|
// Third party copyrights are property of their respective owners.
|
|
|
|
|
|
|
|
#include "test_precomp.hpp"
|
|
|
|
|
|
|
|
namespace opencv_test { namespace {
|
|
|
|
|
|
|
|
TEST(blobFromImage_4ch, Regression)
|
|
|
|
{
|
|
|
|
Mat ch[4];
|
|
|
|
for(int i = 0; i < 4; i++)
|
|
|
|
ch[i] = Mat::ones(10, 10, CV_8U)*i;
|
|
|
|
|
|
|
|
Mat img;
|
|
|
|
merge(ch, 4, img);
|
|
|
|
Mat blob = dnn::blobFromImage(img, 1., Size(), Scalar(), false, false);
|
|
|
|
|
|
|
|
for(int i = 0; i < 4; i++)
|
|
|
|
{
|
|
|
|
ch[i] = Mat(img.rows, img.cols, CV_32F, blob.ptr(0, i));
|
|
|
|
ASSERT_DOUBLE_EQ(cvtest::norm(ch[i], cv::NORM_INF), i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(blobFromImage, allocated)
|
|
|
|
{
|
|
|
|
int size[] = {1, 3, 4, 5};
|
|
|
|
Mat img(size[2], size[3], CV_32FC(size[1]));
|
|
|
|
Mat blob(4, size, CV_32F);
|
|
|
|
void* blobData = blob.data;
|
|
|
|
dnn::blobFromImage(img, blob, 1.0 / 255, Size(), Scalar(), false, false);
|
|
|
|
ASSERT_EQ(blobData, blob.data);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(imagesFromBlob, Regression)
|
|
|
|
{
|
|
|
|
int nbOfImages = 8;
|
|
|
|
|
|
|
|
std::vector<cv::Mat> inputImgs(nbOfImages);
|
|
|
|
for (int i = 0; i < nbOfImages; i++)
|
|
|
|
{
|
|
|
|
inputImgs[i] = cv::Mat::ones(100, 100, CV_32FC3);
|
|
|
|
cv::randu(inputImgs[i], cv::Scalar::all(0), cv::Scalar::all(1));
|
|
|
|
}
|
|
|
|
|
|
|
|
cv::Mat blob = cv::dnn::blobFromImages(inputImgs, 1., cv::Size(), cv::Scalar(), false, false);
|
|
|
|
std::vector<cv::Mat> outputImgs;
|
|
|
|
cv::dnn::imagesFromBlob(blob, outputImgs);
|
|
|
|
|
|
|
|
for (int i = 0; i < nbOfImages; i++)
|
|
|
|
{
|
|
|
|
ASSERT_EQ(cv::countNonZero(inputImgs[i] != outputImgs[i]), 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(readNet, Regression)
|
|
|
|
{
|
|
|
|
Net net = readNet(findDataFile("dnn/squeezenet_v1.1.prototxt", false),
|
|
|
|
findDataFile("dnn/squeezenet_v1.1.caffemodel", false));
|
|
|
|
EXPECT_FALSE(net.empty());
|
|
|
|
net = readNet(findDataFile("dnn/opencv_face_detector.caffemodel", false),
|
|
|
|
findDataFile("dnn/opencv_face_detector.prototxt", false));
|
|
|
|
EXPECT_FALSE(net.empty());
|
|
|
|
net = readNet(findDataFile("dnn/openface_nn4.small2.v1.t7", false));
|
|
|
|
EXPECT_FALSE(net.empty());
|
|
|
|
net = readNet(findDataFile("dnn/tiny-yolo-voc.cfg", false),
|
|
|
|
findDataFile("dnn/tiny-yolo-voc.weights", false));
|
|
|
|
EXPECT_FALSE(net.empty());
|
|
|
|
net = readNet(findDataFile("dnn/ssd_mobilenet_v1_coco.pbtxt", false),
|
|
|
|
findDataFile("dnn/ssd_mobilenet_v1_coco.pb", false));
|
|
|
|
EXPECT_FALSE(net.empty());
|
|
|
|
}
|
|
|
|
|
|
|
|
}} // namespace
|