Ejemplo n.º 1
0
//Generates Intensity Image
Mat Get_Intensity_Image(Mat inputImage)
{
#ifdef GPU_MODE
	gpu::GpuMat d_src(inputImage);
	Mat retImage;
	gpu::GpuMat gputemp;
	vector<gpu::GpuMat> d_vec;
	gpu::split(d_src, d_vec);
	gpu::addWeighted(d_vec[0], 1.0/3, d_vec[1], 1.0/3, 0.0, gputemp, -1);
	gpu::addWeighted(gputemp, 1, d_vec[2], 1.0/3, 0.0, gputemp, -1);
	gputemp.download(retImage);
asdf
#else
	vector<Mat> rgb;
	Mat cputemp;
	Mat retImage;
	split(inputImage, rgb);
	addWeighted(rgb[0], 1.0/3, rgb[1], 1.0/3, 0.0, cputemp, -1);
	addWeighted(cputemp, 1, rgb[2], 1.0/3, 0.0, retImage, -1);
#endif
	return retImage;
}
Ejemplo n.º 2
0
int main(int argc, char *argv[])
{
    cv::Mat src = cv::imread("lena.jpg", cv::IMREAD_GRAYSCALE);
    cv::Mat dst(src.size(), src.type(), cv::Scalar(0));

    cv::cuda::GpuMat d_src(src);
    cv::cuda::GpuMat d_dst(dst.size(), dst.type());

    double f = 1000.0f / cv::getTickFrequency();
    int64 start = 0, end = 0;
    start = cv::getTickCount();

    // 自作カーネルの呼び出し
    launchMyKernel(d_src, d_dst);

    end = cv::getTickCount();
    std::cout << ((end - start) * f) << " ms." << std::endl;

    d_dst.download(dst);
    cv::imwrite("dst.png", dst);

    return 0;
}
Ejemplo n.º 3
0
GPU_PERF_TEST(HoughLines, cv::gpu::DeviceInfo, cv::Size, DoSort)
{
    declare.time(30.0);

    const cv::gpu::DeviceInfo devInfo = GET_PARAM(0);
    cv::gpu::setDevice(devInfo.deviceID());
    const cv::Size size = GET_PARAM(1);
    const bool doSort = GET_PARAM(2);

    const float rho = 1.0f;
    const float theta = CV_PI / 180.0f;
    const int threshold = 300;

    cv::RNG rng(123456789);

    cv::Mat src(size, CV_8UC1, cv::Scalar::all(0));

    const int numLines = rng.uniform(500, 2000);
    for (int i = 0; i < numLines; ++i)
    {
        cv::Point p1(rng.uniform(0, src.cols), rng.uniform(0, src.rows));
        cv::Point p2(rng.uniform(0, src.cols), rng.uniform(0, src.rows));
        cv::line(src, p1, p2, cv::Scalar::all(255), 2);
    }

    cv::gpu::GpuMat d_src(src);
    cv::gpu::GpuMat d_lines;
    cv::gpu::GpuMat d_accum;
    cv::gpu::GpuMat d_buf;
    cv::gpu::HoughLines(d_src, d_lines, d_accum, d_buf, rho, theta, threshold, doSort);

    TEST_CYCLE()
    {
        cv::gpu::HoughLines(d_src, d_lines, d_accum, d_buf, rho, theta, threshold, doSort);
    }
}