Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf7f78fb

Browse files
asmorkalovfengyuentau
authored andcommitted
Merge pull requestopencv#25932 from asmorkalov:as/HAL_cvtColor_aprox
Added xxxApprox overloads for YUV color conversions in HAL and AlgorithmHint to cvtColoropencv#25932The xxxApprox to implement HAL functions with less bits for arithmetic of FP.The hint was introduced inopencv#25792 andopencv#25911### Pull Request Readiness ChecklistSee details athttps://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request- [x] I agree to contribute to the project under Apache 2 License.- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV- [x] The PR is proposed to the proper branch- [x] There is a reference to the original bug report and related work- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name.- [x] The feature is well documented and sample code can be built with the project CMake
1 parent0e94f53 commitf7f78fb

File tree

6 files changed

+265
-88
lines changed

6 files changed

+265
-88
lines changed

‎modules/imgproc/include/opencv2/imgproc.hpp‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3726,10 +3726,11 @@ floating-point.
37263726
@param code color space conversion code (see #ColorConversionCodes).
37273727
@param dstCn number of channels in the destination image; if the parameter is 0, the number of the
37283728
channels is derived automatically from src and code.
3729+
@param hint Implementation modfication flags. See #AlgorithmHint
37293730
37303731
@see @ref imgproc_color_conversions
37313732
*/
3732-
CV_EXPORTS_WvoidcvtColor( InputArray src, OutputArray dst,int code,int dstCn =0 );
3733+
CV_EXPORTS_WvoidcvtColor( InputArray src, OutputArray dst,int code,int dstCn =0, AlgorithmHint hint = cv::ALGO_HINT_DEFAULT );
37333734

37343735
/** @brief Converts an image from one color space to another where the source image is
37353736
stored in two planes.
@@ -3748,8 +3749,9 @@ This function only supports YUV420 to RGB conversion as of now.
37483749
- #COLOR_YUV2RGB_NV21
37493750
- #COLOR_YUV2BGRA_NV21
37503751
- #COLOR_YUV2RGBA_NV21
3752+
@param hint Implementation modfication flags. See #AlgorithmHint
37513753
*/
3752-
CV_EXPORTS_WvoidcvtColorTwoPlane( InputArray src1, InputArray src2, OutputArray dst,int code );
3754+
CV_EXPORTS_WvoidcvtColorTwoPlane( InputArray src1, InputArray src2, OutputArray dst,int code, AlgorithmHint hint = cv::ALGO_HINT_DEFAULT );
37533755

37543756
/** @brief main function for all demosaicing processes
37553757

‎modules/imgproc/src/color.cpp‎

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ static bool ocl_cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
168168

169169
// helper function for dual-plane modes
170170

171-
voidcvtColorTwoPlane( InputArray _ysrc, InputArray _uvsrc, OutputArray _dst,int code )
171+
voidcvtColorTwoPlane( InputArray _ysrc, InputArray _uvsrc, OutputArray _dst,int code, AlgorithmHint hint )
172172
{
173173
// only YUV420 is currently supported
174174
switch (code)
@@ -181,18 +181,21 @@ void cvtColorTwoPlane( InputArray _ysrc, InputArray _uvsrc, OutputArray _dst, in
181181
return;
182182
}
183183

184-
cvtColorTwoPlaneYUV2BGRpair(_ysrc, _uvsrc, _dst,dstChannels(code),swapBlue(code),uIndex(code));
184+
cvtColorTwoPlaneYUV2BGRpair(_ysrc, _uvsrc, _dst,hint,dstChannels(code),swapBlue(code),uIndex(code));
185185
}
186186

187187

188188
//////////////////////////////////////////////////////////////////////////////////////////
189189
// The main function //
190190
//////////////////////////////////////////////////////////////////////////////////////////
191191

192-
voidcvtColor( InputArray _src, OutputArray _dst,int code,int dcn)
192+
voidcvtColor( InputArray _src, OutputArray _dst,int code,int dcn, AlgorithmHint hint)
193193
{
194194
CV_INSTRUMENT_REGION();
195195

196+
if (hint == cv::ALGO_HINT_DEFAULT)
197+
hint =cv::getDefaultAlgorithmHint();
198+
196199
CV_Assert(!_src.empty());
197200

198201
if(dcn <=0)
@@ -244,12 +247,12 @@ void cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
244247

245248
case COLOR_BGR2YCrCb:case COLOR_RGB2YCrCb:
246249
case COLOR_BGR2YUV:case COLOR_RGB2YUV:
247-
cvtColorBGR2YUV(_src, _dst,swapBlue(code), code == COLOR_BGR2YCrCb || code == COLOR_RGB2YCrCb);
250+
cvtColorBGR2YUV(_src, _dst,hint,swapBlue(code), code == COLOR_BGR2YCrCb || code == COLOR_RGB2YCrCb);
248251
break;
249252

250253
case COLOR_YCrCb2BGR:case COLOR_YCrCb2RGB:
251254
case COLOR_YUV2BGR:case COLOR_YUV2RGB:
252-
cvtColorYUV2BGR(_src, _dst, dcn,swapBlue(code), code == COLOR_YCrCb2BGR || code == COLOR_YCrCb2RGB);
255+
cvtColorYUV2BGR(_src, _dst,hint,dcn,swapBlue(code), code == COLOR_YCrCb2BGR || code == COLOR_YCrCb2RGB);
253256
break;
254257

255258
case COLOR_BGR2XYZ:
@@ -321,14 +324,14 @@ void cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
321324
case COLOR_YUV2BGRA_NV21:case COLOR_YUV2RGBA_NV21:case COLOR_YUV2BGRA_NV12:case COLOR_YUV2RGBA_NV12:
322325
// http://www.fourcc.org/yuv.php#NV21 == yuv420sp -> a plane of 8 bit Y samples followed by an interleaved V/U plane containing 8 bit 2x2 subsampled chroma samples
323326
// http://www.fourcc.org/yuv.php#NV12 -> a plane of 8 bit Y samples followed by an interleaved U/V plane containing 8 bit 2x2 subsampled colour difference samples
324-
cvtColorTwoPlaneYUV2BGR(_src, _dst, dcn,swapBlue(code),uIndex(code));
327+
cvtColorTwoPlaneYUV2BGR(_src, _dst,hint,dcn,swapBlue(code),uIndex(code));
325328
break;
326329

327330
case COLOR_YUV2BGR_YV12:case COLOR_YUV2RGB_YV12:case COLOR_YUV2BGRA_YV12:case COLOR_YUV2RGBA_YV12:
328331
case COLOR_YUV2BGR_IYUV:case COLOR_YUV2RGB_IYUV:case COLOR_YUV2BGRA_IYUV:case COLOR_YUV2RGBA_IYUV:
329332
//http://www.fourcc.org/yuv.php#YV12 == yuv420p -> It comprises an NxM Y plane followed by (N/2)x(M/2) V and U planes.
330333
//http://www.fourcc.org/yuv.php#IYUV == I420 -> It comprises an NxN Y plane followed by (N/2)x(N/2) U and V planes
331-
cvtColorThreePlaneYUV2BGR(_src, _dst, dcn,swapBlue(code),uIndex(code));
334+
cvtColorThreePlaneYUV2BGR(_src, _dst,hint,dcn,swapBlue(code),uIndex(code));
332335
break;
333336

334337
case COLOR_YUV2GRAY_420:
@@ -337,7 +340,7 @@ void cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
337340

338341
case COLOR_RGB2YUV_YV12:case COLOR_BGR2YUV_YV12:case COLOR_RGBA2YUV_YV12:case COLOR_BGRA2YUV_YV12:
339342
case COLOR_RGB2YUV_IYUV:case COLOR_BGR2YUV_IYUV:case COLOR_RGBA2YUV_IYUV:case COLOR_BGRA2YUV_IYUV:
340-
cvtColorBGR2ThreePlaneYUV(_src, _dst,swapBlue(code),uIndex(code));
343+
cvtColorBGR2ThreePlaneYUV(_src, _dst,hint,swapBlue(code),uIndex(code));
341344
break;
342345

343346
case COLOR_YUV2RGB_UYVY:case COLOR_YUV2BGR_UYVY:case COLOR_YUV2RGBA_UYVY:case COLOR_YUV2BGRA_UYVY:
@@ -349,7 +352,7 @@ void cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
349352
{
350353
int ycn = (code==COLOR_YUV2RGB_UYVY || code==COLOR_YUV2BGR_UYVY ||
351354
code==COLOR_YUV2RGBA_UYVY || code==COLOR_YUV2BGRA_UYVY) ?1 :0;
352-
cvtColorOnePlaneYUV2BGR(_src, _dst, dcn,swapBlue(code),uIndex(code), ycn);
355+
cvtColorOnePlaneYUV2BGR(_src, _dst,hint,dcn,swapBlue(code),uIndex(code), ycn);
353356
break;
354357
}
355358

@@ -362,7 +365,7 @@ void cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
362365
{
363366
int ycn = (code==COLOR_RGB2YUV_UYVY || code==COLOR_BGR2YUV_UYVY ||
364367
code==COLOR_RGBA2YUV_UYVY || code==COLOR_BGRA2YUV_UYVY) ?1 :0;
365-
cvtColorOnePlaneBGR2YUV(_src, _dst,swapBlue(code),uIndex(code), ycn);
368+
cvtColorOnePlaneBGR2YUV(_src, _dst,hint,swapBlue(code),uIndex(code), ycn);
366369
break;
367370
}
368371

‎modules/imgproc/src/color.hpp‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -556,15 +556,15 @@ void cvtColorLuv2BGR( InputArray _src, OutputArray _dst, int dcn, bool swapb, bo
556556
voidcvtColorBGR2XYZ( InputArray _src, OutputArray _dst,bool swapb );
557557
voidcvtColorXYZ2BGR( InputArray _src, OutputArray _dst,int dcn,bool swapb );
558558

559-
voidcvtColorBGR2YUV( InputArray _src, OutputArray _dst,bool swapb,bool crcb);
560-
voidcvtColorYUV2BGR( InputArray _src, OutputArray _dst,int dcn,bool swapb,bool crcb);
561-
562-
voidcvtColorOnePlaneYUV2BGR( InputArray _src, OutputArray _dst,int dcn,bool swapb,int uidx,int ycn);
563-
voidcvtColorOnePlaneBGR2YUV( InputArray _src, OutputArray _dst,bool swapb,int uidx,int ycn);
564-
voidcvtColorTwoPlaneYUV2BGR( InputArray _src, OutputArray _dst,int dcn,bool swapb,int uidx );
565-
voidcvtColorTwoPlaneYUV2BGRpair( InputArray _ysrc, InputArray _uvsrc, OutputArray _dst,int dcn,bool swapb,int uidx );
566-
voidcvtColorThreePlaneYUV2BGR( InputArray _src, OutputArray _dst,int dcn,bool swapb,int uidx );
567-
voidcvtColorBGR2ThreePlaneYUV( InputArray _src, OutputArray _dst,bool swapb,int uidx);
559+
voidcvtColorBGR2YUV( InputArray _src, OutputArray _dst,AlgorithmHint hint,bool swapb,bool crcb);
560+
voidcvtColorYUV2BGR( InputArray _src, OutputArray _dst,AlgorithmHint hint,int dcn,bool swapb,bool crcb);
561+
562+
voidcvtColorOnePlaneYUV2BGR( InputArray _src, OutputArray _dst,AlgorithmHint hint,int dcn,bool swapb,int uidx,int ycn);
563+
voidcvtColorOnePlaneBGR2YUV( InputArray _src, OutputArray _dst,AlgorithmHint hint,bool swapb,int uidx,int ycn);
564+
voidcvtColorTwoPlaneYUV2BGR( InputArray _src, OutputArray _dst,AlgorithmHint hint,int dcn,bool swapb,int uidx );
565+
voidcvtColorTwoPlaneYUV2BGRpair( InputArray _ysrc, InputArray _uvsrc, OutputArray _dst,AlgorithmHint hint,int dcn,bool swapb,int uidx );
566+
voidcvtColorThreePlaneYUV2BGR( InputArray _src, OutputArray _dst,AlgorithmHint hint,int dcn,bool swapb,int uidx );
567+
voidcvtColorBGR2ThreePlaneYUV( InputArray _src, OutputArray _dst,AlgorithmHint hint,bool swapb,int uidx);
568568
voidcvtColorYUV2Gray_420( InputArray _src, OutputArray _dst );
569569
voidcvtColorYUV2Gray_ch( InputArray _src, OutputArray _dst,int coi );
570570

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp