init
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
#include <iostream>
|
||||
#include "cl_class.h"
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <opencv2/core.hpp>
|
||||
#include <opencv2/core/mat.hpp>
|
||||
// Maximum number of corners.
|
||||
#define FAST_COUNT (1 << 18)
|
||||
|
||||
int main() {
|
||||
opencl gpu;
|
||||
/*
|
||||
gpu.make_kernel("int_add");
|
||||
int A[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
int B[] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 0 };
|
||||
gpu.write_buf(0,0,10,A);
|
||||
gpu.write_buf(0,1,10,B);
|
||||
int C[10];
|
||||
gpu.run(0,10,1,1,2,10,C);
|
||||
std::cout << " result: \n";
|
||||
for (int i = 0; i < 10; i++){
|
||||
std::cout << C[i] << " ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
int A1[] = { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
int B1[] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 10};
|
||||
gpu.reload_buf(0,0,A1);
|
||||
gpu.reload_buf(0,1,B1);
|
||||
int C1[10];
|
||||
gpu.run(0,10,1,1,2,10,C1);
|
||||
std::cout << " result: \n";
|
||||
for (int i = 0; i < 10; i++){
|
||||
std::cout << C1[i] << " ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
gpu.make_kernel("double_add");
|
||||
double A2[] = { 0.2, 1.3, 2.5, 3.6, 4.9, 5.12, 6.5, 7.6, 8.4, 9.1 };
|
||||
double B2[] = { 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0 };
|
||||
gpu.write_buf(1,0,10,A2);
|
||||
gpu.write_buf(1,1,10,B2);
|
||||
double C2[10];
|
||||
gpu.run(1,10,1,1,2,10,C2);
|
||||
std::cout << " result: \n";
|
||||
for (int i = 0; i < 10; i++){
|
||||
std::cout << C2[i] << " ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
*/
|
||||
gpu.make_kernel("fast_gray");
|
||||
cv::Mat img = cv::imread("../frame0287.jpg", CV_8UC1);
|
||||
cv::Mat imageRGBA;
|
||||
cv::Mat downSampled;
|
||||
//cv::imshow("test2",img);
|
||||
//cv::waitKey();
|
||||
cv::resize(img, downSampled, cv::Size(752, 480));
|
||||
cv::cvtColor(downSampled, imageRGBA, CV_GRAY2RGBA);
|
||||
gpu.write_buf(0,0,downSampled);
|
||||
//cv::imshow("test2",downSampled);
|
||||
//cv::waitKey();
|
||||
cl_int2 corners_[740*450];
|
||||
gpu.write_buf(0,1,740*450,corners_);
|
||||
int icorner[1]={0};
|
||||
gpu.write_buf(0,2,1,icorner);
|
||||
int fast_count=FAST_COUNT;
|
||||
gpu.write_buf(0,3,fast_count);
|
||||
printf("\nOpenCL version\n");
|
||||
double time_accumulator = 0;
|
||||
for(int i=0;i<1000;++i){
|
||||
double t = (double)cv::getTickCount();
|
||||
gpu.reload_buf(0,0,downSampled);
|
||||
int icorner[1]={0};
|
||||
gpu.reload_buf(0,2,icorner);
|
||||
gpu.run(0,752,480,1);
|
||||
time_accumulator += ((cv::getTickCount() - t) / cv::getTickFrequency());
|
||||
}
|
||||
printf("OpenCL took %f ms (average over %d trials).\n", time_accumulator/((double)1000)*1000.0, 1000 );
|
||||
int icorner_[1]={0};
|
||||
gpu.read(0,2,icorner_);
|
||||
cl_int2 corners[740*450];
|
||||
gpu.read(0,1,corners);
|
||||
//double t = (double)cv::getTickCount();
|
||||
//cv::Mat condition=cv::Mat::ones(cv::Size(752,480),CV_8UC1);
|
||||
//gpu.run(2,752,480,1,6,360960,condition.data);
|
||||
|
||||
int count=0;
|
||||
for(int i=0;i<icorner_[0];++i){
|
||||
if(corners[i].x<0 || corners[i].x>750 || corners[i].y>450 || corners[i].y<0)continue;
|
||||
cv::circle(imageRGBA, cv::Point(corners[i].x,corners[i].y ), 1, cv::Scalar(0, 0,255),1);
|
||||
++count;
|
||||
}
|
||||
cv::imshow("test3",imageRGBA);
|
||||
std::cerr<<count<<'\n';
|
||||
|
||||
cv::waitKey();
|
||||
gpu.clear_buf();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user