mirror of
https://github.com/opencv/opencv.git
synced 2025-06-26 06:18:43 +08:00

FastCV-based HAL for OpenCV acceleration 2ndpost-3 #26621 ### Detailed description: - Add cv_hal_canny for Canny API Requires binary from [opencv/opencv_3rdparty#90](https://github.com/opencv/opencv_3rdparty/pull/90) Depends on: [opencv/opencv#26617](https://github.com/opencv/opencv/pull/26617) Depends on: [opencv/opencv#26619](https://github.com/opencv/opencv/pull/26619) ### Pull Request Readiness Checklist See details at https://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 - [ ] The PR is proposed to the proper branch - [ ] There is a reference to the original bug report and related work - [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [ ] The feature is well documented and sample code can be built with the project CMake
269 lines
10 KiB
C++
269 lines
10 KiB
C++
/*
|
|
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef OPENCV_FASTCV_HAL_IMGPROC_HPP_INCLUDED
|
|
#define OPENCV_FASTCV_HAL_IMGPROC_HPP_INCLUDED
|
|
|
|
#include <opencv2/core/base.hpp>
|
|
|
|
#undef cv_hal_medianBlur
|
|
#define cv_hal_medianBlur fastcv_hal_medianBlur
|
|
#undef cv_hal_sobel
|
|
#define cv_hal_sobel fastcv_hal_sobel
|
|
#undef cv_hal_boxFilter
|
|
#define cv_hal_boxFilter fastcv_hal_boxFilter
|
|
#undef cv_hal_adaptiveThreshold
|
|
#define cv_hal_adaptiveThreshold fastcv_hal_adaptiveThreshold
|
|
#undef cv_hal_gaussianBlurBinomial
|
|
#define cv_hal_gaussianBlurBinomial fastcv_hal_gaussianBlurBinomial
|
|
#undef cv_hal_warpPerspective
|
|
#define cv_hal_warpPerspective fastcv_hal_warpPerspective
|
|
#undef cv_hal_pyrdown
|
|
#define cv_hal_pyrdown fastcv_hal_pyrdown
|
|
#undef cv_hal_cvtBGRtoHSV
|
|
#define cv_hal_cvtBGRtoHSV fastcv_hal_cvtBGRtoHSV
|
|
#undef cv_hal_cvtBGRtoYUVApprox
|
|
#define cv_hal_cvtBGRtoYUVApprox fastcv_hal_cvtBGRtoYUVApprox
|
|
#undef cv_hal_canny
|
|
#define cv_hal_canny fastcv_hal_canny
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Calculate medianBlur filter
|
|
/// @param src_data Source image data
|
|
/// @param src_step Source image step
|
|
/// @param dst_data Destination image data
|
|
/// @param dst_step Destination image step
|
|
/// @param width Source image width
|
|
/// @param height Source image height
|
|
/// @param depth Depths of source and destination image
|
|
/// @param cn Number of channels
|
|
/// @param ksize Size of kernel
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_medianBlur(
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
int depth,
|
|
int cn,
|
|
int ksize);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Computes Sobel derivatives
|
|
///
|
|
/// @param src_data Source image data
|
|
/// @param src_step Source image step
|
|
/// @param dst_data Destination image data
|
|
/// @param dst_step Destination image step
|
|
/// @param width Source image width
|
|
/// @param height Source image height
|
|
/// @param src_depth Depth of source image
|
|
/// @param dst_depth Depths of destination image
|
|
/// @param cn Number of channels
|
|
/// @param margin_left Left margins for source image
|
|
/// @param margin_top Top margins for source image
|
|
/// @param margin_right Right margins for source image
|
|
/// @param margin_bottom Bottom margins for source image
|
|
/// @param dx orders of the derivative x
|
|
/// @param dy orders of the derivative y
|
|
/// @param ksize Size of kernel
|
|
/// @param scale Scale factor for the computed derivative values
|
|
/// @param delta Delta value that is added to the results prior to storing them in dst
|
|
/// @param border_type Border type
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_sobel(
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
int src_depth,
|
|
int dst_depth,
|
|
int cn,
|
|
int margin_left,
|
|
int margin_top,
|
|
int margin_right,
|
|
int margin_bottom,
|
|
int dx,
|
|
int dy,
|
|
int ksize,
|
|
double scale,
|
|
double delta,
|
|
int border_type);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
int fastcv_hal_boxFilter(
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
int src_depth,
|
|
int dst_depth,
|
|
int cn,
|
|
int margin_left,
|
|
int margin_top,
|
|
int margin_right,
|
|
int margin_bottom,
|
|
size_t ksize_width,
|
|
size_t ksize_height,
|
|
int anchor_x,
|
|
int anchor_y,
|
|
bool normalize,
|
|
int border_type);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_adaptiveThreshold(
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
double maxValue,
|
|
int adaptiveMethod,
|
|
int thresholdType,
|
|
int blockSize,
|
|
double C);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Blurs an image using a Gaussian filter.
|
|
/// @param src_data Source image data
|
|
/// @param src_step Source image step
|
|
/// @param dst_data Destination image data
|
|
/// @param dst_step Destination image step
|
|
/// @param width Source image width
|
|
/// @param height Source image height
|
|
/// @param depth Depth of source and destination image
|
|
/// @param cn Number of channels
|
|
/// @param margin_left Left margins for source image
|
|
/// @param margin_top Top margins for source image
|
|
/// @param margin_right Right margins for source image
|
|
/// @param margin_bottom Bottom margins for source image
|
|
/// @param ksize Kernel size
|
|
/// @param border_type Border type
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_gaussianBlurBinomial(
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
int depth,
|
|
int cn,
|
|
size_t margin_left,
|
|
size_t margin_top,
|
|
size_t margin_right,
|
|
size_t margin_bottom,
|
|
size_t ksize,
|
|
int border_type);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Applies a perspective transformation to an image.
|
|
///
|
|
/// @param src_type Source and destination image type
|
|
/// @param src_data Source image data
|
|
/// @param src_step Source image step
|
|
/// @param src_width Source image width
|
|
/// @param src_height Source image height
|
|
/// @param dst_data Destination image data
|
|
/// @param dst_step Destination image step
|
|
/// @param dst_width Destination image width
|
|
/// @param dst_height Destination image height
|
|
/// @param M 3x3 matrix with transform coefficients
|
|
/// @param interpolation Interpolation mode (CV_HAL_INTER_NEAREST, ...)
|
|
/// @param border_type Border processing mode (CV_HAL_BORDER_REFLECT, ...)
|
|
/// @param border_value Values to use for CV_HAL_BORDER_CONSTANT mode
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_warpPerspective(
|
|
int src_type,
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
int src_width,
|
|
int src_height,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int dst_width,
|
|
int dst_height,
|
|
const double M[9],
|
|
int interpolation,
|
|
int border_type,
|
|
const double border_value[4]);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_pyrdown(
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
int src_width,
|
|
int src_height,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int dst_width,
|
|
int dst_height,
|
|
int depth,
|
|
int cn,
|
|
int border_type);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_cvtBGRtoHSV(
|
|
const uchar * src_data,
|
|
size_t src_step,
|
|
uchar * dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
int depth,
|
|
int scn,
|
|
bool swapBlue,
|
|
bool isFullRange,
|
|
bool isHSV);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_cvtBGRtoYUVApprox(
|
|
const uchar * src_data,
|
|
size_t src_step,
|
|
uchar * dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
int depth,
|
|
int scn,
|
|
bool swapBlue,
|
|
bool isCbCr);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Canny edge detector
|
|
/// @param src_data Source image data
|
|
/// @param src_step Source image step
|
|
/// @param dst_data Destination image data
|
|
/// @param dst_step Destination image step
|
|
/// @param width Source image width
|
|
/// @param height Source image height
|
|
/// @param cn Number of channels
|
|
/// @param lowThreshold low hresholds value
|
|
/// @param highThreshold high thresholds value
|
|
/// @param ksize Kernel size for Sobel operator.
|
|
/// @param L2gradient Flag, indicating use of L2 or L1 norma.
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
int fastcv_hal_canny(
|
|
const uchar* src_data,
|
|
size_t src_step,
|
|
uchar* dst_data,
|
|
size_t dst_step,
|
|
int width,
|
|
int height,
|
|
int cn,
|
|
double lowThreshold,
|
|
double highThreshold,
|
|
int ksize,
|
|
bool L2gradient);
|
|
|
|
#endif
|