@@ -72,11 +72,11 @@ __host__ void gridMerge_(const SrcPtrTuple& src, GpuMat_<DstType>& dst, const Ma
72
72
73
73
dst.create (rows, cols);
74
74
75
- grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::merge (shrinkPtr (src),
76
- shrinkPtr (dst),
77
- shrinkPtr (mask),
78
- rows, cols,
79
- StreamAccessor::getStream (stream));
75
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeTuple (shrinkPtr (src),
76
+ shrinkPtr (dst),
77
+ shrinkPtr (mask),
78
+ rows, cols,
79
+ StreamAccessor::getStream (stream));
80
80
}
81
81
82
82
template <class Policy , class SrcPtrTuple , typename DstType, class MaskPtr >
@@ -90,7 +90,7 @@ __host__ void gridMerge_(const SrcPtrTuple& src, const GlobPtrSz<DstType>& dst,
90
90
CV_Assert ( getRows (dst) == rows && getCols (dst) == cols );
91
91
CV_Assert ( getRows (mask) == rows && getCols (mask) == cols );
92
92
93
- grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::merge (shrinkPtr (src),
93
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeTuple (shrinkPtr (src),
94
94
shrinkPtr (dst),
95
95
shrinkPtr (mask),
96
96
rows, cols,
@@ -107,30 +107,104 @@ __host__ void gridMerge_(const SrcPtrTuple& src, GpuMat_<DstType>& dst, Stream&
107
107
108
108
dst.create (rows, cols);
109
109
110
- grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::merge (shrinkPtr (src),
111
- shrinkPtr (dst),
112
- WithOutMask (),
113
- rows, cols,
114
- StreamAccessor::getStream (stream));
110
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeTuple (shrinkPtr (src),
111
+ shrinkPtr (dst),
112
+ WithOutMask (),
113
+ rows, cols,
114
+ StreamAccessor::getStream (stream));
115
115
}
116
116
117
117
template <class Policy , class SrcPtrTuple , typename DstType>
118
118
__host__ void gridMerge_ (const SrcPtrTuple& src, const GlobPtrSz<DstType>& dst, Stream& stream = Stream::Null())
119
119
{
120
- // CV_StaticAssert( VecTraits<DstType>::cn == tuple_size<SrcPtrTuple>::value, "" );
120
+ CV_StaticAssert ( VecTraits<DstType>::cn == tuple_size<SrcPtrTuple>::value, " " );
121
121
122
122
const int rows = getRows (src);
123
123
const int cols = getCols (src);
124
124
125
125
CV_Assert ( getRows (dst) == rows && getCols (dst) == cols );
126
126
127
- grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::merge (shrinkPtr (src),
128
- shrinkPtr (dst),
129
- WithOutMask (),
130
- rows, cols,
131
- StreamAccessor::getStream (stream));
127
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeTuple (shrinkPtr (src),
128
+ shrinkPtr (dst),
129
+ WithOutMask (),
130
+ rows, cols,
131
+ StreamAccessor::getStream (stream));
132
+ }
133
+
134
+ template <class Policy , typename VecType, typename DstType, class MaskPtr >
135
+ __host__ void gridMergeVector_ (const std::vector<VecType>& src, GpuMat_<DstType>& dst, const MaskPtr& mask, Stream& stream = Stream::Null())
136
+ {
137
+ CV_Assert ( VecTraits<DstType>::cn == src.size () );
138
+
139
+ const int rows = getRows (src);
140
+ const int cols = getCols (src);
141
+
142
+ CV_Assert ( getRows (mask) == rows && getCols (mask) == cols );
143
+
144
+ dst.create (rows, cols);
145
+
146
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeVector (src,
147
+ shrinkPtr (dst),
148
+ shrinkPtr (mask),
149
+ rows, cols,
150
+ StreamAccessor::getStream (stream));
151
+ }
152
+
153
+ template <class Policy , typename VecType, typename DstType, class MaskPtr >
154
+ __host__ void gridMergeVector_ (const std::vector<VecType>& src, const GlobPtrSz<DstType>& dst, const MaskPtr& mask, Stream& stream = Stream::Null())
155
+ {
156
+ CV_Assert ( VecTraits<DstType>::cn == src.size () );
157
+
158
+ const int rows = src[0 ].rows ;
159
+ const int cols = src[0 ].cols ;
160
+
161
+ CV_Assert ( getRows (dst) == rows && getCols (dst) == cols );
162
+ CV_Assert ( getRows (mask) == rows && getCols (mask) == cols );
163
+
164
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeVector (src,
165
+ shrinkPtr (dst),
166
+ shrinkPtr (mask),
167
+ rows, cols,
168
+ StreamAccessor::getStream (stream));
169
+ }
170
+
171
+ template <class Policy , typename VecType, typename DstType>
172
+ __host__ void gridMergeVector_ (const std::vector<VecType>& src, GpuMat_<DstType>& dst, Stream& stream = Stream::Null())
173
+ {
174
+ CV_Assert ( VecTraits<DstType>::cn == src.size () );
175
+
176
+ const int rows = src[0 ].rows ;
177
+ const int cols = src[0 ].cols ;
178
+
179
+ dst.create (rows, cols);
180
+
181
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeVector (src,
182
+ shrinkPtr (dst),
183
+ WithOutMask (),
184
+ rows, cols,
185
+ StreamAccessor::getStream (stream));
186
+ }
187
+
188
+ template <class Policy , typename VecType, typename DstType>
189
+ __host__ void gridMergeVector_ (const std::vector<VecType>& src, const GlobPtrSz<DstType>& dst, Stream& stream = Stream::Null())
190
+ {
191
+ CV_Assert ( VecTraits<DstType>::cn == src.size () );
192
+
193
+ const int rows = src[0 ].rows ;
194
+ const int cols = src[0 ].cols ;
195
+
196
+ CV_Assert ( getRows (dst) == rows && getCols (dst) == cols );
197
+
198
+ grid_split_merge_detail::MergeImpl<VecTraits<DstType>::cn, Policy>::mergeVector (src,
199
+ shrinkPtr (dst),
200
+ WithOutMask (),
201
+ rows, cols,
202
+ StreamAccessor::getStream (stream));
132
203
}
133
204
205
+
206
+ // /////////////////////////////////////////////////////////////
207
+
134
208
template <class Policy , class SrcPtr , typename DstType, class MaskPtr >
135
209
__host__ void gridSplit_ (const SrcPtr& src, const tuple< GpuMat_<DstType>&, GpuMat_<DstType>& >& dst, const MaskPtr& mask, Stream& stream = Stream::Null())
136
210
{
@@ -522,6 +596,30 @@ __host__ void gridMerge(const SrcPtrTuple& src, const GlobPtrSz<DstType>& dst, S
522
596
gridMerge_<DefaultSplitMergePolicy>(src, dst, stream);
523
597
}
524
598
599
+ template <typename VecType, typename DstType, class MaskPtr >
600
+ __host__ void gridMergeVector (const std::vector<VecType>& src, GpuMat_<DstType>& dst, const MaskPtr& mask, Stream& stream = Stream::Null())
601
+ {
602
+ gridMergeVector_<DefaultSplitMergePolicy>(src, dst, mask, stream);
603
+ }
604
+
605
+ template <typename VecType, typename DstType, class MaskPtr >
606
+ __host__ void gridMerge (const std::vector<VecType>& src, const GlobPtrSz<DstType>& dst, const MaskPtr& mask, Stream& stream = Stream::Null())
607
+ {
608
+ gridMergeVector_<DefaultSplitMergePolicy>(src, dst, mask, stream);
609
+ }
610
+
611
+ template <typename VecType, typename DstType>
612
+ __host__ void gridMerge (const std::vector<VecType>& src, GpuMat_<DstType>& dst, Stream& stream = Stream::Null())
613
+ {
614
+ gridMergeVector_<DefaultSplitMergePolicy>(src, dst, stream);
615
+ }
616
+
617
+ template <typename VecType, typename DstType>
618
+ __host__ void gridMerge (const std::vector<VecType>& src, const GlobPtrSz<DstType>& dst, Stream& stream = Stream::Null())
619
+ {
620
+ gridMergeVector_<DefaultSplitMergePolicy>(src, dst, stream);
621
+ }
622
+
525
623
template <class SrcPtr , typename DstType, class MaskPtr >
526
624
__host__ void gridSplit (const SrcPtr& src, const tuple< GpuMat_<DstType>&, GpuMat_<DstType>& >& dst, const MaskPtr& mask, Stream& stream = Stream::Null())
527
625
{
0 commit comments