ߴ

#pragma once #include "sgm_types.h" #include <cuda_runtime.h> #ifdef _WIN32 #ifdef STEREO_CUDA_EXPORT #define STEREO_CUDA_DLL __declspec(dllexport) #else #define STEREO_CUDA_DLL __declspec(dllimport) #endif #else #define STEREO_CUDA_DLL #endif class STEREO_CUDA_DLL StereoCuda { public: StereoCuda(); ~StereoCuda(); public: /** * \brief ��ʼ�� * \param width Ӱ��� * \param height Ӱ��� * \param min_disparity ��С�Ӳ�ֵ * \param disp_range �ӲΧ * \param sgm_option SGM���� * \param print_log �Ƿ��ӡlog��Ϣ * \return true-�ɹ� false-ʧ�� */ bool Init(sint32 width, sint32 height, sint32 min_disparity, sint32 disp_range, CuSGMOption sgm_option,bool print_log = false) const; /** * \brief ƥ�� * \param img_left ��Ӱ������ * \param img_right ��Ӱ������ * \param disp_left ������Ӳ�ͼ���ߴ���Ӱ��ߴ�һ�£���Ԥ�ȷ����ڴ� * \param disp_right ������Ӳ�ͼ���ߴ���Ӱ��ߴ�һ�£���Ԥ�ȷ����ڴ� * \param init_disp_left ��ʼ�Ӳ�ֵ���飬��Ϊnullptr���򲻲��ó�ʼ�Ӳ�ֵ * \param ste_roi_left ��Ӱ��ROI * \param ste_roi_right ��Ӱ��ROI * \return */ bool Match(uint8* img_left, uint8* img_right, float32* disp_left, float32* disp_right = nullptr, sint16* init_disp_left = nullptr, StereoROI_T* ste_roi_left = nullptr, StereoROI_T* ste_roi_right = nullptr, cudaStream_t* streams = nullptr, int stream_count = 4) const; /** * \brief ��ʼ��2 * \param width Ӱ��� * \param height Ӱ��� * \param min_disparity ��С�Ӳ�ֵ * \param disp_range �ӲΧ * \param sgm_option SGM���� * \param cam_param ������� * \param print_log �Ƿ��ӡlog��Ϣ * \return */ bool Init2(sint32 width, sint32 height, sint32 min_disparity, sint32 disp_range, CuSGMOption sgm_option, CamParam_T cam_param, bool print_log = false) const; /** * \brief ƥ��2 * \param img_left ��Ӱ������ * \param img_right ��Ӱ������ * \param depth_left ��Ӱ�����ͼ���ߴ���Ӱ��ߴ�һ�£���Ԥ�ȷ����ڴ� * \param init_disp_left ��Ӱ���ʼ�Ӳ�ֵ���飬��Ϊnullptr���򲻲��ó�ʼ�Ӳ�ֵ * \param ste_roi_left ��Ӱ��ROI * \param ste_roi_right ��Ӱ��ROI * \return true-�ɹ� false-ʧ�� */ bool Match2(uint8* img_left, uint8* img_right, float32* depth_left, sint16* init_disp_left = nullptr, StereoROI_T* ste_roi_left = nullptr, StereoROI_T* ste_roi_right = nullptr, cudaStream_t* streams = nullptr, int stream_count = 4) const; bool MatchGPU(uint8* d_img_left, uint8* d_img_right, float32* d_disp_left, size_t left_pitch, size_t right_pitch, size_t disp_pitch, float32* d_disp_right = nullptr, sint16* d_init_disp_left = nullptr, StereoROI_T* ste_roi_left = nullptr, StereoROI_T* ste_roi_right = nullptr, cudaStream_t* streams = nullptr, int stream_count = 4) const; void SetMinDisparity(const sint32& min_disparty); sint32 GetDispartyRange(); /**\brief �ͷ��ڴ� */ void Release() const; /** * \brief ��ȡ�Ӳ�ͼ��ROI�� * \param disp_ptr �Ӳ�ͼָ�� * \param width �Ӳ�ͼ�� * \param height �Ӳ�ͼ�� * \param ste_roi �����ROI���� */ static void GetRoiFromDispMap(float32* disp_ptr, sint32 width, sint32 height, StereoROI_T& ste_roi); /**\brief ��ȡ��Чֵ */ static float32 get_invad_float(); static sint16 get_invad_short(); /**\brief ��ȡ������ƥ��ģʽ�³���߲�֮������в���Ӳ�������Χ */ static sint16 get_level_range(); /**\brief �������˷�����ҳ�ڴ棨������죩 */ static bool MallocPageLockedPtr(void** ptr, size_t size); /**\brief �ͷ���������ҳ�ڴ� */ static bool FreePageLockedPtr(void* ptr); private: void* impl_; }; 注释上述代码
09-26
[Running] python -u "d:\code\VSCode\project_6\main.py" [Done] exited with code=0 in 1.016 seconds [Running] python -u "d:\code\VSCode\project_6\main.py" [Done] exited with code=0 in 0.154 seconds [Running] python -u "d:\code\VSCode\project_6\main.py" === Bayer ģʽͼ���ؽ�ʵ�� === �ļ� 'ex04.dat' ��С: 262144 �ֽ� ���ڶ�ȡ����... ��ȡ�� 262144 ������ �����ߴ�: 640 x 480 = 307200 ����: ���ݴ�С��ƥ��! �Զ������ߴ�... �޷��Զ������ߴ磬����������� �޷���ȡ���ݣ��˳����� [Done] exited with code=0 in 1.867 seconds [Running] python -u "d:\code\VSCode\project_6\main.py" === Bayer ģʽͼ���ؽ�ʵ�� === �ļ� 'ex04.dat' ��С: 262144 �ֽ� ���ڶ�ȡ����... ��ȡ�� 262144 ������ �����ߴ�: 640 x 480 = 307200 ����: ���ݴ�С��ƥ��! �Զ������ߴ�... �޷��Զ������ߴ磬����������� �޷���ȡ���ݣ��˳����� [Done] exited with code=0 in 1.364 seconds [Running] python -u "d:\code\VSCode\project_6\main.py" === Bayer ģʽͼ���ؽ�ʵ�� === �ļ���С: 262144 �ֽ� ���ܵijߴ����: 256 x 1024 512 x 512 1024 x 256 ���Գߴ�: 512 x 512 ��ȡ�� 262144 ������ �ɹ�����Ϊ 512 x 512 ���ݷ�Χ: [0, 255] ʹ�óߴ�: 512 x 512 ���ڽ��� Bayer ��ֵ... d:\code\VSCode\project_6\main.py:86: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 0] = (bayer_data[y-1, x-1] + bayer_data[y-1, x+1] + bayer_data[y+1, x-1] + bayer_data[y+1, x+1]) // 4 d:\code\VSCode\project_6\main.py:87: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 1] = (bayer_data[y, x-1] + bayer_data[y, x+1] + bayer_data[y-1, x] + bayer_data[y+1, x]) // 4 d:\code\VSCode\project_6\main.py:84: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 2] = (bayer_data[y, x-1] + bayer_data[y, x+1]) // 2 d:\code\VSCode\project_6\main.py:83: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 0] = (bayer_data[y-1, x] + bayer_data[y+1, x]) // 2 d:\code\VSCode\project_6\main.py:81: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 2] = (bayer_data[y-1, x] + bayer_data[y+1, x]) // 2 d:\code\VSCode\project_6\main.py:76: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 1] = (bayer_data[y, x-1] + bayer_data[y, x+1] + bayer_data[y-1, x] + bayer_data[y+1, x]) // 4 d:\code\VSCode\project_6\main.py:77: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 2] = (bayer_data[y-1, x-1] + bayer_data[y-1, x+1] + bayer_data[y+1, x-1] + bayer_data[y+1, x+1]) // 4 d:\code\VSCode\project_6\main.py:80: RuntimeWarning: overflow encountered in scalar add rgb[y, x, 0] = (bayer_data[y, x-1] + bayer_data[y, x+1]) // 2 ���ڽ����Զ���ƽ��... ��ƽ��ǰͨ����ֵ - R: 38.50, G: 83.35, B: 32.00 ��ʾͼ��... d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 21407 (\N{CJK UNIFIED IDEOGRAPH-539F}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 22987 (\N{CJK UNIFIED IDEOGRAPH-59CB}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 25968 (\N{CJK UNIFIED IDEOGRAPH-6570}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 25454 (\N{CJK UNIFIED IDEOGRAPH-636E}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 25554 (\N{CJK UNIFIED IDEOGRAPH-63D2}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 20540 (\N{CJK UNIFIED IDEOGRAPH-503C}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 21518 (\N{CJK UNIFIED IDEOGRAPH-540E}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 30333 (\N{CJK UNIFIED IDEOGRAPH-767D}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 24179 (\N{CJK UNIFIED IDEOGRAPH-5E73}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 34913 (\N{CJK UNIFIED IDEOGRAPH-8861}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 21069 (\N{CJK UNIFIED IDEOGRAPH-524D}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 33258 (\N{CJK UNIFIED IDEOGRAPH-81EA}) missing from font(s) DejaVu Sans. plt.tight_layout() d:\code\VSCode\project_6\main.py:181: UserWarning: Glyph 21160 (\N{CJK UNIFIED IDEOGRAPH-52A8}) missing from font(s) DejaVu Sans. plt.tight_layout() D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 21407 (\N{CJK UNIFIED IDEOGRAPH-539F}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 22987 (\N{CJK UNIFIED IDEOGRAPH-59CB}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 25968 (\N{CJK UNIFIED IDEOGRAPH-6570}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 25454 (\N{CJK UNIFIED IDEOGRAPH-636E}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 25554 (\N{CJK UNIFIED IDEOGRAPH-63D2}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 20540 (\N{CJK UNIFIED IDEOGRAPH-503C}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 21518 (\N{CJK UNIFIED IDEOGRAPH-540E}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 30333 (\N{CJK UNIFIED IDEOGRAPH-767D}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 24179 (\N{CJK UNIFIED IDEOGRAPH-5E73}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 34913 (\N{CJK UNIFIED IDEOGRAPH-8861}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 21069 (\N{CJK UNIFIED IDEOGRAPH-524D}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 33258 (\N{CJK UNIFIED IDEOGRAPH-81EA}) missing from font(s) DejaVu Sans. func(*args) D:\python\lib\tkinter\__init__.py:839: UserWarning: Glyph 21160 (\N{CJK UNIFIED IDEOGRAPH-52A8}) missing from font(s) DejaVu Sans. func(*args) ����ִ�����! [Done] exited with code=0 in 253.688 seconds [Running] python -u "d:\code\VSCode\project_6\main.py" Traceback (most recent call last): File "d:\code\VSCode\project_6\main.py", line 5, in <module> import cv2 ModuleNotFoundError: No module named 'cv2' [Done] exited with code=1 in 0.605 seconds [Running] python -u "d:\code\VSCode\project_6\main.py" Traceback (most recent call last): File "d:\code\VSCode\project_6\main.py", line 5, in <module> import cv2 ModuleNotFoundError: No module named 'cv2' [Done] exited with code=1 in 0.612 seconds
10-18
#pragma once #include "sgm_types.h" #include <cuda_runtime.h> class CostComputor; class CostAggregator; class DisparityFilter; class StereoCudaImpl { public: StereoCudaImpl(); ~StereoCudaImpl(); public: /** * \brief ��ʼ�� * \param width Ӱ��� * \param height Ӱ��� * \param min_disparity ��С�Ӳ�ֵ * \param disp_range �ӲΧ * \param sgm_option SGM���� * \param print_log �Ƿ��ӡlog��Ϣ * \return true-�ɹ� false-ʧ�� */ bool Init(sint32 width, sint32 height, sint32 min_disparity, sint32 disp_range, CuSGMOption sgm_option, bool print_log = false); /** * \brief ƥ�� * \param img_left ��Ӱ������ * \param img_right ��Ӱ������ * \param disp_left ������Ӳ�ͼ���ߴ���Ӱ��ߴ�һ�£���Ԥ�ȷ����ڴ� * \param disp_right ������Ӳ�ͼ���ߴ���Ӱ��ߴ�һ�£���Ԥ�ȷ����ڴ� * \param init_disp_left ��ʼ�Ӳ�ֵ���飬��Ϊnullptr���򲻲��ó�ʼ�Ӳ�ֵ * \param ste_roi_left ��Ӱ��ROI * \param ste_roi_right ��Ӱ��ROI * \return */ bool Match(uint8* img_left, uint8* img_right, float32* disp_left, float32* disp_right = nullptr, sint16* init_disp_left = nullptr, StereoROI_T* ste_roi_left = nullptr, StereoROI_T* ste_roi_right = nullptr, cudaStream_t* streams = nullptr, int stream_count = 4); /** * \brief ��ʼ��2 * \param width Ӱ��� * \param height Ӱ��� * \param min_disparity ��С�Ӳ�ֵ * \param disp_range �ӲΧ * \param sgm_option SGM���� * \param cam_param ������� * \param print_log �Ƿ��ӡlog��Ϣ * \return */ bool Init2(sint32 width, sint32 height, sint32 min_disparity, sint32 disp_range, CuSGMOption sgm_option, CamParam_T cam_param, bool print_log = false); /** * \brief ƥ��2 * \param img_left ��Ӱ������ * \param img_right ��Ӱ������ * \param depth_left ��Ӱ�����ͼ���ߴ���Ӱ��ߴ�һ�£���Ԥ�ȷ����ڴ� * \param init_disp_left ��Ӱ���ʼ�Ӳ�ֵ���飬��Ϊnullptr���򲻲��ó�ʼ�Ӳ�ֵ * \param ste_roi_left ��Ӱ��ROI * \param ste_roi_right ��Ӱ��ROI * \return true-�ɹ� false-ʧ�� */ bool Match2(uint8* img_left, uint8* img_right, float32* depth_left, sint16* init_disp_left = nullptr, StereoROI_T* ste_roi_left = nullptr, StereoROI_T* ste_roi_right = nullptr, cudaStream_t* streams = nullptr, int stream_count = 4); /** * \brief ��ȡ�Ӳ�ͼ��ROI�� * \param disp_ptr �Ӳ�ͼָ�� * \param width �Ӳ�ͼ�� * \param height �Ӳ�ͼ�� * \param ste_roi �����ROI���� */ static void GetRoiFromDispMap(float32* disp_ptr, sint32 width, sint32 height, StereoROI_T& ste_roi); void SetMinDisparity(const sint32& min_disparity); sint32 GetDispartyRange(); /**\brief �ͷ��ڴ� */ void Release(); /**\brief ��ȡ��Чֵ */ static float32 get_invad_float(); static sint16 get_invad_short(); /**\brief ��ȡ������ƥ��ģʽ�³���߲�֮������в���Ӳ�������Χ */ static sint16 get_level_range(); /**\brief �������˷�����ҳ�ڴ棨������죩 */ static bool MallocPageLockedPtr(void** ptr, size_t size); /**\brief �ͷ���������ҳ�ڴ� */ static bool FreePageLockedPtr(void* ptr); bool MatchGPU(uint8* d_img_left, uint8* d_img_right, float32* d_disp_left, size_t left_pitch, size_t right_pitch, size_t disp_pitch, float32* d_disp_right = nullptr, sint16* d_init_disp_left = nullptr, StereoROI_T* ste_roi_left = nullptr, StereoROI_T* ste_roi_right = nullptr, cudaStream_t* streams = nullptr, int stream_count = 4); #ifdef _DEBUG void OutInitValueR(sint16* pInitValue); #endif private: /**\brief ���ۼ��� */ bool ComputeCost(uint8* img_left, uint8* img_right, sint16* init_disp_left = nullptr, cudaStream_t* streams = nullptr) const; /**\brief ���۾ۺ� */ bool CostAggregate(sint16* init_disp_left = nullptr, StereoROI_T* ste_roi_left = nullptr, StereoROI_T* ste_roi_right = nullptr, cudaStream_t* streams = nullptr) const; /**\brief �˲� */ void Filter(cudaStream_t* streams = nullptr) const; /**\brief �޳�С��ͨ�� */ void RemovePeaks(StereoROI_T* ste_roi_left, float32* disp_left); private: /**\brief �豸������ָ�� */ uint8* cu_img_left_; uint8* cu_img_right_; /**\brief �豸���Ӳ�ͼָ�� */ float32* cu_disp_out_; /**\brief �豸�����ͼָ�� */ float32* cu_depth_left_; /**\brief �豸�˳�ʼ�Ӳ�ͼָ�� */ sint16* cu_inidisp_left_; sint16* cu_inidisp_right_; sint16* cu_inidisp_tmp_; /**\brief �����˳�ʼ�Ӳ�ͼָ�� */ sint16* inidisp_tmp_; /**\brief sgm���� */ CuSGMOption sgm_option_; /**\brief ������� */ CamParam_T cam_param_; /**\brief ��С�Ӳ�ֵ */ sint32 min_disparity_; /**\brief �ӲΧ */ sint32 disp_range_; /**\brief Ӱ��ߴ� */ sint32 width_; sint32 height_; size_t im_psize_; size_t dp_psize_; size_t idp_psize_; /**\brief ���ۼ����� */ CostComputor* computor_; /**\brief ���۾ۺ��� */ CostAggregator* aggregator_; /**\brief �Ӳ�ͼ�˲��� */ DisparityFilter* filter_; /**\brief �������Ӳ�ͼָ�� */ float32* disp_ptr_; /**\brief �޳�С��ͨ�����в����ṹ���� */ void** remove_peaks_; /**\brief �޳�С��ͨ�������߳��� */ sint32 num_threads_; /**\brief �豸���첽�� */ void* cu_streams_; /**\brief ��־��ӡ���� */ bool print_log_; }; 注释上述代码
09-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值