提交 cf04fed3 编写于 作者: N niko

fix the compilation bugs

上级 c0a41054
......@@ -2,7 +2,7 @@ if(APPLE)
set(OPENCL_FOUND YES)
set(OPENCL_LIBRARIES "-framework OpenCL")
else()
find_package(OpenCL)
find_package(OpenCL QUIET)
# Try AMD/ATI Stream SDK
if (NOT OPENCL_FOUND)
......
......@@ -14,7 +14,7 @@ cl_list = glob.glob(os.path.join(indir, "*.cl"))
kfile = open(outname, "wt")
kfile.write("""// This file is auto-generated. Do not edit!
#include "precomp.hpp"
//#include "precomp.hpp"
namespace cv
{
namespace ocl
......
......@@ -260,7 +260,7 @@ namespace cv
CV_Assert((!map2.data || map2.size()== map1.size()));
dst.create(map1.size(), src.type());
int depth = src.depth(), map_depth = map1.depth();
string kernelName;
......@@ -279,28 +279,107 @@ namespace cv
kernelName = "remapNNSConstant";
}
int type = src.type();
size_t blkSizeX = 16, blkSizeY = 16;
size_t glbSizeX;
if(src.type() == CV_8UC1 || src.type() == CV_8UC2 || src.type() == CV_8UC4)
int channels = dst.channels();
int depth = dst.depth();
int type = src.type();
size_t blkSizeX = 16, blkSizeY = 16;
size_t glbSizeX;
int cols = dst.cols;
if(src.type() == CV_8UC1)
{
cols = (dst.cols + dst.offset%4 + 3)/4;
glbSizeX = cols %blkSizeX==0 ? cols : (cols/blkSizeX+1)*blkSizeX;
}
else if(src.type() == CV_8UC4 || src.type() == CV_32FC1)
{
size_t cols = (dst.cols + dst.offset%4 + 3)/4;
cols = (dst.cols + (dst.offset>>2)%4 + 3)/4;
glbSizeX = cols %blkSizeX==0 ? cols : (cols/blkSizeX+1)*blkSizeX;
}
else
{
glbSizeX = dst.cols%blkSizeX==0 ? dst.cols : (dst.cols/blkSizeX+1)*blkSizeX;
}
size_t glbSizeY = dst.rows%blkSizeY==0 ? dst.rows : (dst.rows/blkSizeY+1)*blkSizeY;
size_t globalThreads[3] = {glbSizeX,glbSizeY,1};
size_t localThreads[3] = {blkSizeX,blkSizeY,1};
/*
/////////////////////////////
//using the image buffer
/////////////////////////////
size_t image_row_pitch = 0;
cl_int err1, err2, err3;
cl_mem_flags flags1 = CL_MEM_READ_ONLY;
cl_image_format format;
if(src.type() == CV_8UC1)
{
format.image_channel_order = CL_R;
format.image_channel_data_type = CL_UNSIGNED_INT8;
}
else if(src.type() == CV_8UC4)
{
format.image_channel_order = CL_RGBA;
format.image_channel_data_type = CL_UNSIGNED_INT8;
}
else if(src.type() == CV_32FC1)
{
format.image_channel_order = CL_R;
format.image_channel_data_type = CL_FLOAT;
}
else if(src.type() == CV_32FC4)
{
format.image_channel_order = CL_RGBA;
format.image_channel_data_type = CL_FLOAT;
}
cl_mem srcImage = clCreateImage2D(clCxt->impl->clContext, flags1, &format, src.cols, src.rows,
image_row_pitch, NULL, &err1);
if(err1 != CL_SUCCESS)
{
printf("Error creating CL image buffer, error code %d\n", err1);
return;
}
const size_t src_origin[3] = {0, 0, 0};
const size_t region[3] = {src.cols, src.rows, 1};
cl_event BtoI_event, ItoB_event;
err3 = clEnqueueCopyBufferToImage(clCxt->impl->clCmdQueue, (cl_mem)src.data, srcImage,
0, src_origin, region, 0, NULL, NULL);
if(err3 != CL_SUCCESS)
{
printf("Error copying buffer to image\n");
printf("Error code %d \n", err3);
return;
}
// clWaitForEvents(1, &BtoI_event);
cl_int ret;
Mat test(src.rows, src.cols, CV_8UC1);
memset(test.data, 0, src.rows*src.cols);
ret = clEnqueueReadImage(clCxt->impl->clCmdQueue, srcImage, CL_TRUE,
src_origin, region, 0, 0, test.data, NULL, NULL, &ItoB_event);
if(ret != CL_SUCCESS)
{
printf("read image error, %d ", ret);
return;
}
clWaitForEvents(1, &ItoB_event);
cout << "src" << endl;
cout << src << endl;
cout<<"image:"<<endl;
cout<< test << endl;
*/
vector< pair<size_t, const void *> > args;
if(map1.channels() == 2)
{
args.push_back( make_pair(sizeof(cl_mem),(void*)&dst.data));
args.push_back( make_pair(sizeof(cl_mem),(void*)&src.data));
// args.push_back( make_pair(sizeof(cl_mem),(void*)&srcImage)); //imageBuffer
args.push_back( make_pair(sizeof(cl_mem),(void*)&map1.data));
args.push_back( make_pair(sizeof(cl_int),(void*)&dst.offset));
args.push_back( make_pair(sizeof(cl_int),(void*)&src.offset));
......@@ -314,12 +393,10 @@ namespace cv
args.push_back( make_pair(sizeof(cl_int),(void*)&dst.rows));
args.push_back( make_pair(sizeof(cl_int),(void*)&map1.cols));
args.push_back( make_pair(sizeof(cl_int),(void*)&map1.rows));
args.push_back( make_pair(sizeof(cl_int), (void *)&cols));
args.push_back( make_pair(sizeof(cl_double4),(void*)&borderValue));
}
openCLExecuteKernel(clCxt,&imgproc_remap,kernelName,globalThreads,localThreads,args,src.channels(),src.depth());
}
////////////////////////////////////////////////////////////////////////////////////////////
......
......@@ -67,7 +67,7 @@
#include "interpolation.hpp"
//#include "add_test_info.h"
#define OPENCV_DEFAULT_OPENCL_DEVICE CVCL_DEVICE_TYPE_ALL
#define OPENCV_DEFAULT_OPENCL_DEVICE CVCL_DEVICE_TYPE_GPU
#endif
......@@ -858,10 +858,10 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
cv::RNG& rng = TS::ptr()->get_rng();
//cv::Size size = cv::Size(20, 20);
cv::Size srcSize = cv::Size(15, 20);
cv::Size dstSize = cv::Size(20, 20);
cv::Size map1Size = cv::Size(20, 20);
double min = 1, max = 20;
cv::Size srcSize = cv::Size(100, 100);
cv::Size dstSize = cv::Size(100, 100);
cv::Size map1Size = cv::Size(100, 100);
double min = 5, max = 16;
if(srcType != nulltype)
{
......@@ -898,14 +898,11 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
src_roicols = rng.uniform(1, src.cols);
src_roirows = rng.uniform(1, src.rows);
cout << "dst_roicols: " << dst_roicols << "dst_roirows: "<< dst_roirows << endl;
cout << "src_roicols: " << src_roicols << "dst_roirows: "<< src_roirows << endl;
srcx = rng.uniform(0, src.cols - src_roicols);
srcy = rng.uniform(0, src.rows - src_roirows);
dstx = rng.uniform(0, dst.cols - dst_roicols);
dsty = rng.uniform(0, dst.rows - dst_roirows);
cout << "srcx: " << srcx << "srcy: " << srcy << "dstx: " << dstx << "dsty: " << dsty << endl;
map1_roicols = dst_roicols;
map1_roirows = dst_roirows;
map2_roicols = dst_roicols;
......@@ -940,10 +937,6 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
{
map1_roi = map1(Rect(map1x,map1y,map1_roicols,map1_roirows));
gmap1_roi = map1_roi;
// cv::Mat maptest(gmap1_roi);
// cout << "maptest " << endl;
//cout << maptest << endl;
//gmap1_roi = gmap1(Rect(map1x,map1y,map1_roicols,map1_roirows));
}
else if (map1Type == CV_32FC1 && map2Type == CV_32FC1)
......@@ -962,6 +955,11 @@ PARAM_TEST_CASE(Remap, MatType, MatType, MatType, int, int)
TEST_P(Remap, Mat)
{
if((interpolation == 1 && map1Type == CV_16SC2) ||(interpolation == 1 && map1Type == CV_16SC1 && map2Type == CV_16SC1))
{
cout << "LINEAR don't support the map1Type and map2Type" << endl;
return;
}
int bordertype[] = {cv::BORDER_CONSTANT,cv::BORDER_REPLICATE/*,BORDER_REFLECT,BORDER_WRAP,BORDER_REFLECT_101*/};
const char* borderstr[]={"BORDER_CONSTANT", "BORDER_REPLICATE"/*, "BORDER_REFLECT","BORDER_WRAP","BORDER_REFLECT_101"*/};
// for(int i = 0; i < sizeof(bordertype)/sizeof(int); i++)
......@@ -1448,7 +1446,7 @@ INSTANTIATE_TEST_CASE_P(Imgproc, meanShiftProc, Combine(
));
INSTANTIATE_TEST_CASE_P(Imgproc, Remap, Combine(
Values(CV_8UC1, CV_8UC2, CV_8UC4),
Values(CV_8UC1, CV_8UC4, CV_32FC1, CV_32FC4),
Values(CV_16SC2, CV_32FC2), NULL_TYPE,
Values((int)cv::INTER_NEAREST, (int)cv::INTER_LINEAR),
Values((int)cv::BORDER_CONSTANT)));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册