图像归一化速度测试

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)                                             # requirement of cmake version

PROJECT(opencvTest_1.0)                                                      # project name

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")                                 # set the directory of executable files

set(CMAKE_BUILD_TYPE Debug)

set(OpenCV_DIR   "/home/opencv-3.4.16/build")                                   # 如果你的opencv找不到,可以自己指定目录

find_package(OpenCV REQUIRED)                                                   # find required opencv

 
include_directories(${OpenCV_INCLUDE_DIRS})                                     # directory of opencv headers

add_executable(${PROJECT_NAME}  opencvTest.cpp)                                # name of executable file and path of source file

link_directories(${OpenCV_LIBRARY_DIRS})                                        # directory of opencv library,没有也可以

target_link_libraries(${PROJECT_NAME}  ${OpenCV_LIBS})                          # opencv libraries


opencvTest.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include <ctime>
using namespace std;
using namespace cv;
 
void Normalization_img(cv::Mat& image,
                       cv::Mat &outputImage,
                       float alpha = 0.0f,
                       vector<float> mean_ = {0.485f, 0.456f, 0.406f},
                       vector<float> std_={0.229f, 0.224f, 0.225f}
                       
                    ) {
    for (size_t i = 0; i < outputImage.rows; i++)
    {
         for(size_t j = 0; j < outputImage.cols; j++)
         {   
            if(alpha > 0.0f){
                outputImage.at<Vec3f>(i,j)[0] =  static_cast<float>(image.at<Vec3b>(i,j)[0])*alpha;
                outputImage.at<Vec3f>(i,j)[1] =  static_cast<float>(image.at<Vec3b>(i,j)[1])*alpha;
                outputImage.at<Vec3f>(i,j)[2] =  static_cast<float>(image.at<Vec3b>(i,j)[2])*alpha; 
            }else{
                outputImage.at<Vec3f>(i,j)[0] =  (static_cast<float>(image.at<Vec3b>(i,j)[0])/255.0f-mean_[0])/std_[0];
                outputImage.at<Vec3f>(i,j)[1] =  (static_cast<float>(image.at<Vec3b>(i,j)[1])/255.0f-mean_[1])/std_[1];
                outputImage.at<Vec3f>(i,j)[2] =  (static_cast<float>(image.at<Vec3b>(i,j)[2])/255.0f-mean_[2])/std_[2];
            }
         }
    }
}
int main(int argc, char** argv)
{
 
    clock_t start,elpased;

	cv::Mat image = cv::imread("test_images/2.bmp",IMREAD_COLOR); 
 
    cv::Mat outputImage = cv::Mat::eye(image.rows,image.cols,CV_32FC3);
 
    start = clock();
	Normalization_img(image,outputImage, 1.f / 255.0);
    elpased = clock() - start;
    std::cout <<"自定义时间消耗:"<< (float)elpased/CLOCKS_PER_SEC*1000<<"ms" << std::endl;

 
    cv::Mat outputImage1(outputImage,cv::Rect(0,0,3,2));
    std::cout<<"outputImage="<< outputImage1<<std::endl;
 
    Mat inner_255;
    start = clock();
    image.convertTo(inner_255, CV_32FC3, 1.f / 255.0);
    elpased = clock() - start;

    cv::Mat inner_2551(inner_255,cv::Rect(0,0,3,2));
    std::cout<<"inner_2551="<< inner_2551<<std::endl;
    std::cout <<"convertTo时间消耗:"<< (float)elpased/CLOCKS_PER_SEC*1000<<"ms"  << std::endl;
	return 0;
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值