 #include "Thrust_interop.hpp"
+#include <opencv2/core/cuda_stream_accessor.hpp>
 
 #include <thrust/transform.h>
 #include <thrust/random.h>
 #include <thrust/sort.h>
+#include <thrust/system/cuda/execution_policy.h>
 struct prg
 {
 	float a, b;
-	
+
 	__host__ __device__
 		prg(float _a = 0.f, float _b = 1.f) : a(_a), b(_b) {};
 

		auto count = thrust::count(GpuMatBeginItr<int>(d_value), GpuMatEndItr<int>(d_value), 15);
		std::cout << count << std::endl;
	}

	


	return 0;
}

		if (channel < N)
			return val.val[channel] == value;
		return false;
	}

	__host__ __device__ bool operator()( const thrust::tuple<T, T, T>& val)
	{
		if (channel == 0)
			return thrust::get<0>(val) == value;
		if (channel == 1)
			return thrust::get<1>(val) == value;
		if (channel == 2)
			return thrust::get<2>(val) == value;
	}
};
template<typename T> struct pred_greater
{
	T value;
	__host__ __device__ pred_greater(T value_) : value(value_){}
	__host__ __device__ bool operator()(const T& val) const
	{
		return val > value;
	}
};

