mirror of
https://github.com/opencv/opencv.git
synced 2025-06-12 04:12:52 +08:00
Merge branch 4.x
This commit is contained in:
commit
03983549fc
3
3rdparty/hal_rvv/hal_rvv_1p0/merge.hpp
vendored
3
3rdparty/hal_rvv/hal_rvv_1p0/merge.hpp
vendored
@ -1,3 +1,6 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
#ifndef OPENCV_HAL_RVV_MERGE_HPP_INCLUDED
|
||||
#define OPENCV_HAL_RVV_MERGE_HPP_INCLUDED
|
||||
|
||||
|
1
3rdparty/kleidicv/CMakeLists.txt
vendored
1
3rdparty/kleidicv/CMakeLists.txt
vendored
@ -20,4 +20,5 @@ else()
|
||||
set(THE_ROOT "${OpenCV_BINARY_DIR}/3rdparty/kleidicv/kleidicv-${KLEIDICV_SRC_COMMIT}")
|
||||
endif()
|
||||
|
||||
option(KLEIDICV_ENABLE_SME2 "" OFF) # not compatible with some CLang versions in NDK
|
||||
include("${THE_ROOT}/adapters/opencv/CMakeLists.txt")
|
||||
|
@ -915,16 +915,6 @@ macro(ocv_create_module)
|
||||
POST_BUILD
|
||||
COMMAND link.exe /edit /APPCONTAINER:NO $(TargetPath))
|
||||
endif()
|
||||
|
||||
if("${the_module}" STREQUAL "opencv_ts")
|
||||
# copy required dll files; WinRT apps need these dlls that are usually substituted by Visual Studio
|
||||
# however they are not on path and need to be placed with executables to run from console w/o APPCONTAINER
|
||||
add_custom_command(TARGET ${the_module}
|
||||
POST_BUILD
|
||||
COMMAND copy /y "\"$(VCInstallDir)redist\\$(PlatformTarget)\\Microsoft.VC$(PlatformToolsetVersion).CRT\\msvcp$(PlatformToolsetVersion).dll\"" "\"${CMAKE_BINARY_DIR}\\bin\\$(Configuration)\\msvcp$(PlatformToolsetVersion)_app.dll\""
|
||||
COMMAND copy /y "\"$(VCInstallDir)redist\\$(PlatformTarget)\\Microsoft.VC$(PlatformToolsetVersion).CRT\\msvcr$(PlatformToolsetVersion).dll\"" "\"${CMAKE_BINARY_DIR}\\bin\\$(Configuration)\\msvcr$(PlatformToolsetVersion)_app.dll\""
|
||||
COMMAND copy /y "\"$(VCInstallDir)redist\\$(PlatformTarget)\\Microsoft.VC$(PlatformToolsetVersion).CRT\\vccorlib$(PlatformToolsetVersion).dll\"" "\"${CMAKE_BINARY_DIR}\\bin\\$(Configuration)\\vccorlib$(PlatformToolsetVersion)_app.dll\"")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
@ -9,6 +9,8 @@
|
||||
#error "Build configuration error"
|
||||
#endif
|
||||
|
||||
#pragma warning(disable:4447) // Disable warning 'main' signature found without threading model
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
|
@ -11,7 +11,7 @@ Simple Thresholding
|
||||
-------------------
|
||||
|
||||
Here, the matter is straight-forward. For every pixel, the same threshold value is applied.
|
||||
If the pixel value is smaller than the threshold, it is set to 0, otherwise it is set to a maximum value.
|
||||
If the pixel value is smaller than or equal to the threshold, it is set to 0, otherwise it is set to a maximum value.
|
||||
The function **cv.threshold** is used to apply the thresholding.
|
||||
The first argument is the source image, which **should be a grayscale image**.
|
||||
The second argument is the threshold value which is used to classify the pixel values.
|
||||
|
@ -164,9 +164,9 @@ bool getBinLocation(std::string& dst)
|
||||
#ifdef _WIN32
|
||||
bool getBinLocation(std::wstring& dst)
|
||||
{
|
||||
void* addr = (void*)getModuleLocation; // using code address, doesn't work with static linkage!
|
||||
HMODULE m = 0;
|
||||
#if _WIN32_WINNT >= 0x0501 && (!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
|
||||
void* addr = (void*)getModuleLocation; // using code address, doesn't work with static linkage!
|
||||
::GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
|
||||
reinterpret_cast<LPCTSTR>(addr),
|
||||
&m);
|
||||
|
@ -221,7 +221,9 @@ void InfEngineNgraphNet::createNet(Target targetId) {
|
||||
CV_LOG_DEBUG(NULL, "DNN/NGRAPH: Add 'Result' output: " << output_node_it->first);
|
||||
CV_Assert(output_node_it->second);
|
||||
auto out = std::make_shared<ov::op::v0::Result>(output_node_it->second->node);
|
||||
out->set_friendly_name(output_node_it->first + (output_node_it->second->node.get_node()->get_output_size() == 1 ? "" : ".0"));
|
||||
std::string name = output_node_it->first + (output_node_it->second->node.get_node()->get_output_size() == 1 ? "" : ".0");
|
||||
CV_LOG_DEBUG(NULL, "DNN-IE: Change friendly name from " << out->get_friendly_name() << " to " << name);
|
||||
out->set_friendly_name(name);
|
||||
outs.push_back(out);
|
||||
}
|
||||
CV_Assert_N(!inputs_vec.empty(), !outs.empty());
|
||||
@ -597,16 +599,22 @@ void InfEngineNgraphNet::forward(const std::vector<Ptr<BackendWrapper> >& outBlo
|
||||
{
|
||||
const std::string& name = it.get_node()->get_friendly_name();
|
||||
auto blobIt = allBlobs.find(name);
|
||||
CV_Assert(blobIt != allBlobs.end());
|
||||
if (blobIt == allBlobs.end())
|
||||
{
|
||||
CV_Error(Error::StsAssert, format("Input blob with name %s not found", name.c_str()));
|
||||
}
|
||||
reqWrapper->req.set_input_tensor(i++, isAsync ? copyBlob(blobIt->second) : blobIt->second);
|
||||
}
|
||||
|
||||
i = 0;
|
||||
for (const auto& it : netExec.outputs())
|
||||
for (const auto& it : cnn->outputs()) // Starts from OpenVINO 2024 CompiledModel changes output frindly names
|
||||
{
|
||||
const std::string& name = it.get_node()->get_friendly_name();
|
||||
auto blobIt = allBlobs.find(name);
|
||||
CV_Assert(blobIt != allBlobs.end());
|
||||
if (blobIt == allBlobs.end())
|
||||
{
|
||||
CV_Error(Error::StsAssert, format("Output blob with name %s not found", name.c_str()));
|
||||
}
|
||||
reqWrapper->req.set_output_tensor(i++, isAsync ? copyBlob(blobIt->second) : blobIt->second);
|
||||
}
|
||||
|
||||
|
@ -34,7 +34,20 @@
|
||||
#include <opencv2\highgui\highgui_winrt.hpp>
|
||||
#include "window_winrt_bridge.hpp"
|
||||
|
||||
#define CV_WINRT_NO_GUI_ERROR( funcname ) CV_Error(cv::Error::StsNotImplemented, "The function is not implemented")
|
||||
#define CV_WINRT_NO_GUI_ERROR( funcname ) \
|
||||
{ \
|
||||
cvError( cv::Error::StsNotImplemented, funcname, \
|
||||
"The function is not implemented. ", \
|
||||
__FILE__, __LINE__ ); \
|
||||
}
|
||||
|
||||
#ifdef CV_ERROR
|
||||
#undef CV_ERROR
|
||||
#define CV_ERROR( Code, Msg ) \
|
||||
{ \
|
||||
cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ ); \
|
||||
};
|
||||
#endif
|
||||
|
||||
/********************************** WinRT Specific API Implementation ******************************************/
|
||||
|
||||
@ -70,6 +83,8 @@ void showImageImpl(const char* name, InputArray arr)
|
||||
|
||||
int namedWindowImpl(const char* name, int flags)
|
||||
{
|
||||
CV_UNUSED(flags);
|
||||
|
||||
if (!name)
|
||||
CV_Error(cv::Error::StsNullPtr, "NULL name");
|
||||
|
||||
@ -94,8 +109,6 @@ void destroyAllWindowsImpl()
|
||||
int createTrackbar2Impl(const char* trackbar_name, const char* window_name,
|
||||
int* val, int count, CvTrackbarCallback2 on_notify, void* userdata)
|
||||
{
|
||||
int pos = 0;
|
||||
|
||||
if (!window_name || !trackbar_name)
|
||||
CV_Error(cv::Error::StsNullPtr, "NULL window or trackbar name");
|
||||
|
||||
@ -167,7 +180,7 @@ int getTrackbarPosImpl(const char* trackbar_name, const char* window_name)
|
||||
CvTrackbar* trackbar = HighguiBridge::getInstance().findTrackbarByName(trackbar_name, window_name);
|
||||
|
||||
if (trackbar)
|
||||
pos = trackbar->getPosition();
|
||||
pos = (int)trackbar->getPosition();
|
||||
|
||||
return pos;
|
||||
}
|
||||
@ -179,11 +192,11 @@ int waitKeyImpl(int delay)
|
||||
CV_WINRT_NO_GUI_ERROR("waitKeyImpl");
|
||||
|
||||
// see https://msdn.microsoft.com/en-us/library/windows/desktop/ms724411(v=vs.85).aspx
|
||||
int time0 = GetTickCount64();
|
||||
//int time0 = GetTickCount64();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
CvWindow* window;
|
||||
// CvWindow* window;
|
||||
|
||||
if (delay <= 0)
|
||||
{
|
||||
@ -194,6 +207,7 @@ int waitKeyImpl(int delay)
|
||||
|
||||
void setMouseCallbackImpl(const char* window_name, CvMouseCallback on_mouse, void* param)
|
||||
{
|
||||
CV_UNUSED(on_mouse); CV_UNUSED(param);
|
||||
CV_WINRT_NO_GUI_ERROR("setMouseCallbackImpl");
|
||||
|
||||
if (!window_name)
|
||||
@ -210,19 +224,23 @@ void setMouseCallbackImpl(const char* window_name, CvMouseCallback on_mouse, voi
|
||||
|
||||
void moveWindowImpl(const char* name, int x, int y)
|
||||
{
|
||||
CV_UNUSED(name); CV_UNUSED(x); CV_UNUSED(y);
|
||||
CV_WINRT_NO_GUI_ERROR("moveWindowImpl");
|
||||
}
|
||||
|
||||
void resizeWindowImpl(const char* name, int width, int height)
|
||||
{
|
||||
CV_UNUSED(name); CV_UNUSED(width); CV_UNUSED(height);
|
||||
CV_WINRT_NO_GUI_ERROR("resizeWindowImpl");
|
||||
}
|
||||
|
||||
void cvSetModeWindow_WinRT(const char* name, double prop_value) {
|
||||
CV_UNUSED(name); CV_UNUSED(prop_value);
|
||||
CV_WINRT_NO_GUI_ERROR("cvSetModeWindow");
|
||||
}
|
||||
|
||||
double cvGetModeWindow_WinRT(const char* name) {
|
||||
CV_UNUSED(name);
|
||||
CV_WINRT_NO_GUI_ERROR("cvGetModeWindow");
|
||||
return cv::Error::StsNotImplemented;
|
||||
}
|
||||
|
@ -64,9 +64,9 @@ HighguiBridge& HighguiBridge::getInstance()
|
||||
return instance;
|
||||
}
|
||||
|
||||
void HighguiBridge::setContainer(Windows::UI::Xaml::Controls::Panel^ container)
|
||||
void HighguiBridge::setContainer(Windows::UI::Xaml::Controls::Panel^ container_)
|
||||
{
|
||||
this->container = container;
|
||||
this->container = container_;
|
||||
}
|
||||
|
||||
CvWindow* HighguiBridge::findWindowByName(cv::String name)
|
||||
@ -190,9 +190,9 @@ void CvTrackbar::setMinPosition(double pos)
|
||||
slider->Minimum = pos;
|
||||
}
|
||||
|
||||
void CvTrackbar::setSlider(Slider^ slider) {
|
||||
if (slider)
|
||||
this->slider = slider;
|
||||
void CvTrackbar::setSlider(Slider^ slider_) {
|
||||
if (slider_)
|
||||
this->slider = slider_;
|
||||
}
|
||||
|
||||
double CvTrackbar::getPosition()
|
||||
@ -219,6 +219,7 @@ Slider^ CvTrackbar::getSlider()
|
||||
|
||||
CvWindow::CvWindow(cv::String name, int flags) : name(name)
|
||||
{
|
||||
CV_UNUSED(flags);
|
||||
this->page = (Page^)Windows::UI::Xaml::Markup::XamlReader::Load(const_cast<Platform::String^>(markupContent));
|
||||
this->sliderMap = new std::map<cv::String, CvTrackbar*>();
|
||||
|
||||
@ -246,14 +247,15 @@ CvWindow::CvWindow(cv::String name, int flags) : name(name)
|
||||
|
||||
CvWindow::~CvWindow() {}
|
||||
|
||||
void CvWindow::createSlider(cv::String name, int* val, int count, CvTrackbarCallback2 on_notify, void* userdata)
|
||||
void CvWindow::createSlider(cv::String name_, int* val, int count, CvTrackbarCallback2 on_notify, void* userdata)
|
||||
{
|
||||
CvTrackbar* trackbar = findTrackbarByName(name);
|
||||
CV_UNUSED(userdata);
|
||||
CvTrackbar* trackbar = findTrackbarByName(name_);
|
||||
|
||||
// Creating slider if name is new or reusing the existing one
|
||||
Slider^ slider = !trackbar ? ref new Slider() : trackbar->getSlider();
|
||||
|
||||
slider->Header = HighguiBridge::getInstance().convertString(name);
|
||||
slider->Header = HighguiBridge::getInstance().convertString(name_);
|
||||
|
||||
// Making slider the same size as the image control or setting minimal size.
|
||||
// This is added to cover potential edge cases because:
|
||||
@ -282,26 +284,26 @@ void CvWindow::createSlider(cv::String name, int* val, int count, CvTrackbarCall
|
||||
if (!sliderPanel) return;
|
||||
|
||||
// Adding slider to the list for current window
|
||||
CvTrackbar* trackbar = new CvTrackbar(name, slider, this);
|
||||
trackbar->callback = on_notify;
|
||||
CvTrackbar* trackbar_ = new CvTrackbar(name_, slider, this);
|
||||
trackbar_->callback = on_notify;
|
||||
slider->ValueChanged +=
|
||||
ref new Controls::Primitives::RangeBaseValueChangedEventHandler(
|
||||
[=](Platform::Object^ sender,
|
||||
Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e)
|
||||
{
|
||||
Slider^ slider = (Slider^)sender;
|
||||
trackbar->callback(slider->Value, nullptr);
|
||||
trackbar_->callback((int)slider->Value, nullptr);
|
||||
});
|
||||
this->sliderMap->insert(std::pair<cv::String, CvTrackbar*>(name, trackbar));
|
||||
this->sliderMap->insert(std::pair<cv::String, CvTrackbar*>(name_, trackbar_));
|
||||
|
||||
// Adding slider to the window
|
||||
sliderPanel->Children->Append(slider);
|
||||
}
|
||||
}
|
||||
|
||||
CvTrackbar* CvWindow::findTrackbarByName(cv::String name)
|
||||
CvTrackbar* CvWindow::findTrackbarByName(cv::String name_)
|
||||
{
|
||||
auto search = sliderMap->find(name);
|
||||
auto search = sliderMap->find(name_);
|
||||
if (search != sliderMap->end()) {
|
||||
return search->second;
|
||||
}
|
||||
@ -343,12 +345,12 @@ Page^ CvWindow::getPage()
|
||||
}
|
||||
|
||||
//TODO: prototype, not in use yet
|
||||
void CvWindow::createButton(cv::String name)
|
||||
void CvWindow::createButton(cv::String name_)
|
||||
{
|
||||
if (!buttonPanel) return;
|
||||
|
||||
Button^ b = ref new Button();
|
||||
b->Content = HighguiBridge::getInstance().convertString(name);
|
||||
b->Content = HighguiBridge::getInstance().convertString(name_);
|
||||
b->Width = 260;
|
||||
b->Height = 80;
|
||||
b->Click += ref new Windows::UI::Xaml::RoutedEventHandler(
|
||||
|
@ -113,7 +113,6 @@ private:
|
||||
|
||||
// Meyers singleton
|
||||
HighguiBridge(const HighguiBridge &);
|
||||
void operator=(HighguiBridge &);
|
||||
HighguiBridge() {
|
||||
windowsMap = new std::map<cv::String, CvWindow*>();
|
||||
};
|
||||
|
@ -2666,39 +2666,30 @@ void warpAffineBlocklineNN(int *adelta, int *bdelta, short* xy, int X0, int Y0,
|
||||
{
|
||||
CALL_HAL(warpAffineBlocklineNN, cv_hal_warpAffineBlocklineNN, adelta, bdelta, xy, X0, Y0, bw);
|
||||
|
||||
const int AB_BITS = MAX(10, (int)INTER_BITS);
|
||||
constexpr int AB_BITS = MAX(10, static_cast<int>(INTER_BITS));
|
||||
int x1 = 0;
|
||||
#if CV_TRY_SSE4_1
|
||||
bool useSSE4_1 = CV_CPU_HAS_SUPPORT_SSE4_1;
|
||||
if( useSSE4_1 )
|
||||
opt_SSE4_1::WarpAffineInvoker_Blockline_SSE41(adelta, bdelta, xy, X0, Y0, bw);
|
||||
else
|
||||
#endif
|
||||
#if (CV_SIMD || CV_SIMD_SCALABLE)
|
||||
{
|
||||
#if CV_SIMD128
|
||||
const v_int32 v_X0 = vx_setall_s32(X0);
|
||||
const v_int32 v_Y0 = vx_setall_s32(Y0);
|
||||
const int step = VTraits<v_int16>::vlanes();
|
||||
for (; x1 <= bw - step; x1 += step)
|
||||
{
|
||||
v_int32x4 v_X0 = v_setall_s32(X0), v_Y0 = v_setall_s32(Y0);
|
||||
int span = VTraits<v_uint16x8>::vlanes();
|
||||
for( ; x1 <= bw - span; x1 += span )
|
||||
{
|
||||
v_int16x8 v_dst[2];
|
||||
#define CV_CONVERT_MAP(ptr,offset,shift) v_pack(v_shr<AB_BITS>(v_add(shift,v_load(ptr + offset))),\
|
||||
v_shr<AB_BITS>(v_add(shift,v_load(ptr + offset + 4))))
|
||||
v_dst[0] = CV_CONVERT_MAP(adelta, x1, v_X0);
|
||||
v_dst[1] = CV_CONVERT_MAP(bdelta, x1, v_Y0);
|
||||
#undef CV_CONVERT_MAP
|
||||
v_store_interleave(xy + (x1 << 1), v_dst[0], v_dst[1]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
for( ; x1 < bw; x1++ )
|
||||
{
|
||||
int X = (X0 + adelta[x1]) >> AB_BITS;
|
||||
int Y = (Y0 + bdelta[x1]) >> AB_BITS;
|
||||
xy[x1*2] = saturate_cast<short>(X);
|
||||
xy[x1*2+1] = saturate_cast<short>(Y);
|
||||
v_int16 v_X = v_pack(v_shr<AB_BITS>(v_add(v_X0, vx_load(adelta + x1))),
|
||||
v_shr<AB_BITS>(v_add(v_X0, vx_load(adelta + x1 + step / 2))));
|
||||
v_int16 v_Y = v_pack(v_shr<AB_BITS>(v_add(v_Y0, vx_load(bdelta + x1))),
|
||||
v_shr<AB_BITS>(v_add(v_Y0, vx_load(bdelta + x1 + step / 2))));
|
||||
v_store_interleave(xy + 2 * x1, v_X, v_Y);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
for (; x1 < bw; x1++)
|
||||
{
|
||||
const int X = (X0 + adelta[x1]) >> AB_BITS;
|
||||
const int Y = (Y0 + bdelta[x1]) >> AB_BITS;
|
||||
xy[x1 * 2] = saturate_cast<short>(X);
|
||||
xy[x1 * 2 + 1] = saturate_cast<short>(Y);
|
||||
}
|
||||
}
|
||||
|
||||
void warpAffineBlockline(int *adelta, int *bdelta, short* xy, short* alpha, int X0, int Y0, int bw)
|
||||
|
@ -74,7 +74,6 @@ namespace opt_SSE4_1
|
||||
void convertMaps_nninterpolate32f1c16s_SSE41(const float* src1f, const float* src2f, short* dst1, int width);
|
||||
void convertMaps_32f1c16s_SSE41(const float* src1f, const float* src2f, short* dst1, ushort* dst2, int width);
|
||||
void convertMaps_32f2c16s_SSE41(const float* src1f, short* dst1, ushort* dst2, int width);
|
||||
void WarpAffineInvoker_Blockline_SSE41(int *adelta, int *bdelta, short* xy, int X0, int Y0, int bw);
|
||||
|
||||
class WarpPerspectiveLine_SSE4
|
||||
{
|
||||
|
@ -173,42 +173,6 @@ void convertMaps_32f2c16s_SSE41(const float* src1f, short* dst1, ushort* dst2, i
|
||||
}
|
||||
}
|
||||
|
||||
void WarpAffineInvoker_Blockline_SSE41(int *adelta, int *bdelta, short* xy, int X0, int Y0, int bw)
|
||||
{
|
||||
const int AB_BITS = MAX(10, (int)INTER_BITS);
|
||||
int x1 = 0;
|
||||
|
||||
__m128i v_X0 = _mm_set1_epi32(X0);
|
||||
__m128i v_Y0 = _mm_set1_epi32(Y0);
|
||||
for (; x1 <= bw - 16; x1 += 16)
|
||||
{
|
||||
__m128i v_x0 = _mm_packs_epi32(_mm_srai_epi32(_mm_add_epi32(v_X0, _mm_loadu_si128((__m128i const *)(adelta + x1))), AB_BITS),
|
||||
_mm_srai_epi32(_mm_add_epi32(v_X0, _mm_loadu_si128((__m128i const *)(adelta + x1 + 4))), AB_BITS));
|
||||
__m128i v_x1 = _mm_packs_epi32(_mm_srai_epi32(_mm_add_epi32(v_X0, _mm_loadu_si128((__m128i const *)(adelta + x1 + 8))), AB_BITS),
|
||||
_mm_srai_epi32(_mm_add_epi32(v_X0, _mm_loadu_si128((__m128i const *)(adelta + x1 + 12))), AB_BITS));
|
||||
|
||||
__m128i v_y0 = _mm_packs_epi32(_mm_srai_epi32(_mm_add_epi32(v_Y0, _mm_loadu_si128((__m128i const *)(bdelta + x1))), AB_BITS),
|
||||
_mm_srai_epi32(_mm_add_epi32(v_Y0, _mm_loadu_si128((__m128i const *)(bdelta + x1 + 4))), AB_BITS));
|
||||
__m128i v_y1 = _mm_packs_epi32(_mm_srai_epi32(_mm_add_epi32(v_Y0, _mm_loadu_si128((__m128i const *)(bdelta + x1 + 8))), AB_BITS),
|
||||
_mm_srai_epi32(_mm_add_epi32(v_Y0, _mm_loadu_si128((__m128i const *)(bdelta + x1 + 12))), AB_BITS));
|
||||
|
||||
_mm_interleave_epi16(v_x0, v_x1, v_y0, v_y1);
|
||||
|
||||
_mm_storeu_si128((__m128i *)(xy + x1 * 2), v_x0);
|
||||
_mm_storeu_si128((__m128i *)(xy + x1 * 2 + 8), v_x1);
|
||||
_mm_storeu_si128((__m128i *)(xy + x1 * 2 + 16), v_y0);
|
||||
_mm_storeu_si128((__m128i *)(xy + x1 * 2 + 24), v_y1);
|
||||
}
|
||||
for (; x1 < bw; x1++)
|
||||
{
|
||||
int X = (X0 + adelta[x1]) >> AB_BITS;
|
||||
int Y = (Y0 + bdelta[x1]) >> AB_BITS;
|
||||
xy[x1 * 2] = saturate_cast<short>(X);
|
||||
xy[x1 * 2 + 1] = saturate_cast<short>(Y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class WarpPerspectiveLine_SSE4_Impl CV_FINAL : public WarpPerspectiveLine_SSE4
|
||||
{
|
||||
public:
|
||||
|
@ -265,7 +265,7 @@ int CV_DrawingTest_CPP::checkLineVirtualIterator( )
|
||||
int x3 = randomGenerator.uniform(-512, 1024+1);
|
||||
int y3 = randomGenerator.uniform(-512, 1024+1);
|
||||
int channels = randomGenerator.uniform(1, 3+1);
|
||||
Mat m(cv::Size(width, height), CV_MAKETYPE(8U, channels));
|
||||
Mat m(cv::Size(width, height), CV_MAKETYPE(CV_8U, channels));
|
||||
Point p1(x1, y1);
|
||||
Point p2(x2, y2);
|
||||
Point offset(x3, y3);
|
||||
|
@ -309,7 +309,7 @@ Ptr<FaceDetectorYN> FaceDetectorYN::create(const String& framework,
|
||||
#ifdef HAVE_OPENCV_DNN
|
||||
return makePtr<FaceDetectorYNImpl>(framework, bufferModel, bufferConfig, input_size, score_threshold, nms_threshold, top_k, backend_id, target_id);
|
||||
#else
|
||||
CV_UNUSED(bufferModel); CV_UNUSED(bufferConfig); CV_UNUSED(input_size); CV_UNUSED(score_threshold); CV_UNUSED(nms_threshold); CV_UNUSED(top_k); CV_UNUSED(backend_id); CV_UNUSED(target_id);
|
||||
CV_UNUSED(framework); CV_UNUSED(bufferModel); CV_UNUSED(bufferConfig); CV_UNUSED(input_size); CV_UNUSED(score_threshold); CV_UNUSED(nms_threshold); CV_UNUSED(top_k); CV_UNUSED(backend_id); CV_UNUSED(target_id);
|
||||
CV_Error(cv::Error::StsNotImplemented, "cv::FaceDetectorYN requires enabled 'dnn' module.");
|
||||
#endif
|
||||
}
|
||||
|
@ -210,7 +210,7 @@ Ptr<FaceRecognizerSF> FaceRecognizerSF::create(const String& framework,
|
||||
#ifdef HAVE_OPENCV_DNN
|
||||
return makePtr<FaceRecognizerSFImpl>(framework, bufferModel, bufferConfig, backend_id, target_id);
|
||||
#else
|
||||
CV_UNUSED(bufferModel); CV_UNUSED(bufferConfig); CV_UNUSED(backend_id); CV_UNUSED(target_id);
|
||||
CV_UNUSED(framework); CV_UNUSED(bufferModel); CV_UNUSED(bufferConfig); CV_UNUSED(backend_id); CV_UNUSED(target_id);
|
||||
CV_Error(cv::Error::StsNotImplemented, "cv::FaceRecognizerSF requires enabled 'dnn' module");
|
||||
#endif
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ MediaStreamSink::MediaStreamSink(
|
||||
__in MediaSampleHandler^ sampleHandler
|
||||
)
|
||||
: _shutdown(false)
|
||||
, _id(-1)
|
||||
, _id((DWORD)-1)
|
||||
, _width(0)
|
||||
, _height(0)
|
||||
{
|
||||
@ -207,16 +207,16 @@ HRESULT MediaStreamSink::QueueEvent(
|
||||
__in MediaEventType met,
|
||||
__in REFGUID extendedType,
|
||||
__in HRESULT status,
|
||||
__in_opt const PROPVARIANT *value
|
||||
__in_opt const PROPVARIANT *value_
|
||||
)
|
||||
{
|
||||
return ExceptionBoundary([this, met, extendedType, status, value]()
|
||||
return ExceptionBoundary([this, met, extendedType, status, value_]()
|
||||
{
|
||||
auto lock = _lock.LockExclusive();
|
||||
|
||||
_VerifyNotShutdown();
|
||||
|
||||
CHK(_eventQueue->QueueEventParamVar(met, extendedType, status, value));
|
||||
CHK(_eventQueue->QueueEventParamVar(met, extendedType, status, value_));
|
||||
});
|
||||
}
|
||||
|
||||
@ -381,4 +381,4 @@ void MediaStreamSink::_UpdateMediaType(__in const ComPtr<IMFMediaType>& mt)
|
||||
}
|
||||
|
||||
CHK(mt->CopyAllItems(_curMT.Get()));
|
||||
}
|
||||
}
|
||||
|
@ -81,11 +81,11 @@ void VideoioBridge::allocateOutputBuffers()
|
||||
}
|
||||
|
||||
// performed on UI thread
|
||||
void VideoioBridge::allocateBuffers(int width, int height)
|
||||
void VideoioBridge::allocateBuffers(int width_, int height_)
|
||||
{
|
||||
// allocate input Mats (bgra8 = CV_8UC4, RGB24 = CV_8UC3)
|
||||
frontInputMat.create(height, width, CV_8UC3);
|
||||
backInputMat.create(height, width, CV_8UC3);
|
||||
frontInputMat.create(height_, width_, CV_8UC3);
|
||||
backInputMat.create(height_, width_, CV_8UC3);
|
||||
|
||||
frontInputPtr = frontInputMat.ptr(0);
|
||||
backInputPtr = backInputMat.ptr(0);
|
||||
@ -155,4 +155,4 @@ void VideoioBridge::setHeight(int _height)
|
||||
height = _height;
|
||||
}
|
||||
|
||||
// end
|
||||
// end
|
||||
|
@ -154,6 +154,7 @@ namespace cv {
|
||||
// see VideoCapture::read
|
||||
bool VideoCapture_WinRT::retrieveFrame(int channel, cv::OutputArray outArray)
|
||||
{
|
||||
CV_UNUSED(channel);
|
||||
if (!started) {
|
||||
|
||||
int width, height;
|
||||
|
@ -238,9 +238,9 @@ void Video::CopyOutput() {
|
||||
auto inAr = VideoioBridge::getInstance().frontInputPtr;
|
||||
auto outAr = GetData(VideoioBridge::getInstance().frontOutputBuffer->PixelBuffer);
|
||||
|
||||
const unsigned int bytesPerPixel = 3;
|
||||
const unsigned int bytesPerPixel_ = 3;
|
||||
auto pbScanline = inAr;
|
||||
auto plPitch = width * bytesPerPixel;
|
||||
auto plPitch = width * bytesPerPixel_;
|
||||
|
||||
auto buf = outAr;
|
||||
unsigned int colBytes = width * 4;
|
||||
@ -254,7 +254,7 @@ void Video::CopyOutput() {
|
||||
|
||||
// used for RGB24:
|
||||
// nb. alpha is set to full opaque
|
||||
for (unsigned int i = 0, j = 0; i < plPitch; i += bytesPerPixel, j += 4)
|
||||
for (unsigned int i = 0, j = 0; i < plPitch; i += bytesPerPixel_, j += 4)
|
||||
{
|
||||
// swizzle the R and B values (RGB24 to Bgr8)
|
||||
buf[j] = pbScanline[i + 2];
|
||||
@ -317,4 +317,4 @@ bool Video::listDevices() {
|
||||
return result.get();
|
||||
}
|
||||
|
||||
// end
|
||||
// end
|
||||
|
@ -252,12 +252,12 @@ if __name__ == "__main__":
|
||||
parser.add_argument('--cmake_option', action='append', help="Append CMake options")
|
||||
# Use flag --build_flags="-s USE_PTHREADS=0 -Os" for one and more arguments as in the example
|
||||
parser.add_argument('--build_flags', help="Append Emscripten build options")
|
||||
parser.add_argument('--build_wasm_intrin_test', default=False, action="store_true", help="Build WASM intrin tests")
|
||||
parser.add_argument('--build_wasm_intrin_test', action="store_true", help="Build WASM intrin tests")
|
||||
# Write a path to modify file like argument of this flag
|
||||
parser.add_argument('--config', help="Specify configuration file with own list of exported into JS functions")
|
||||
parser.add_argument('--webnn', action="store_true", help="Enable WebNN Backend")
|
||||
|
||||
transformed_args = ["--cmake_option=%s".format(arg) if arg[:2] == "-D" else arg for arg in sys.argv[1:]]
|
||||
transformed_args = ["--cmake_option={}".format(arg) if arg[:2] == "-D" else arg for arg in sys.argv[1:]]
|
||||
args = parser.parse_args(transformed_args)
|
||||
|
||||
log.debug("Args: %s", args)
|
||||
|
Loading…
Reference in New Issue
Block a user