Просмотр исходного кода

Release InterpolateVideoFrame.

sdk-team 5 лет назад
Родитель
Сommit
e70f8f2d10

+ 3 - 0
CHANGELOG

@@ -1,3 +1,6 @@
+2020-12-22 Version: patch
+- Release InterpolateVideoFrame.
+
 2020-12-22 Version: patch
 - Release DetectRibFracture.
 

+ 4 - 0
facebody/CMakeLists.txt

@@ -57,6 +57,8 @@ set(facebody_public_header_model
 	include/alibabacloud/facebody/model/DetectMaskResult.h
 	include/alibabacloud/facebody/model/DetectPedestrianRequest.h
 	include/alibabacloud/facebody/model/DetectPedestrianResult.h
+	include/alibabacloud/facebody/model/DetectPedestrianIntrusionRequest.h
+	include/alibabacloud/facebody/model/DetectPedestrianIntrusionResult.h
 	include/alibabacloud/facebody/model/DetectVideoLivingFaceRequest.h
 	include/alibabacloud/facebody/model/DetectVideoLivingFaceResult.h
 	include/alibabacloud/facebody/model/EnhanceFaceRequest.h
@@ -140,6 +142,8 @@ set(facebody_src
 	src/model/DetectMaskResult.cc
 	src/model/DetectPedestrianRequest.cc
 	src/model/DetectPedestrianResult.cc
+	src/model/DetectPedestrianIntrusionRequest.cc
+	src/model/DetectPedestrianIntrusionResult.cc
 	src/model/DetectVideoLivingFaceRequest.cc
 	src/model/DetectVideoLivingFaceResult.cc
 	src/model/EnhanceFaceRequest.cc

+ 8 - 0
facebody/include/alibabacloud/facebody/FacebodyClient.h

@@ -58,6 +58,8 @@
 #include "model/DetectMaskResult.h"
 #include "model/DetectPedestrianRequest.h"
 #include "model/DetectPedestrianResult.h"
+#include "model/DetectPedestrianIntrusionRequest.h"
+#include "model/DetectPedestrianIntrusionResult.h"
 #include "model/DetectVideoLivingFaceRequest.h"
 #include "model/DetectVideoLivingFaceResult.h"
 #include "model/EnhanceFaceRequest.h"
@@ -165,6 +167,9 @@ namespace AlibabaCloud
 			typedef Outcome<Error, Model::DetectPedestrianResult> DetectPedestrianOutcome;
 			typedef std::future<DetectPedestrianOutcome> DetectPedestrianOutcomeCallable;
 			typedef std::function<void(const FacebodyClient*, const Model::DetectPedestrianRequest&, const DetectPedestrianOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DetectPedestrianAsyncHandler;
+			typedef Outcome<Error, Model::DetectPedestrianIntrusionResult> DetectPedestrianIntrusionOutcome;
+			typedef std::future<DetectPedestrianIntrusionOutcome> DetectPedestrianIntrusionOutcomeCallable;
+			typedef std::function<void(const FacebodyClient*, const Model::DetectPedestrianIntrusionRequest&, const DetectPedestrianIntrusionOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DetectPedestrianIntrusionAsyncHandler;
 			typedef Outcome<Error, Model::DetectVideoLivingFaceResult> DetectVideoLivingFaceOutcome;
 			typedef std::future<DetectVideoLivingFaceOutcome> DetectVideoLivingFaceOutcomeCallable;
 			typedef std::function<void(const FacebodyClient*, const Model::DetectVideoLivingFaceRequest&, const DetectVideoLivingFaceOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DetectVideoLivingFaceAsyncHandler;
@@ -290,6 +295,9 @@ namespace AlibabaCloud
 			DetectPedestrianOutcome detectPedestrian(const Model::DetectPedestrianRequest &request)const;
 			void detectPedestrianAsync(const Model::DetectPedestrianRequest& request, const DetectPedestrianAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			DetectPedestrianOutcomeCallable detectPedestrianCallable(const Model::DetectPedestrianRequest& request) const;
+			DetectPedestrianIntrusionOutcome detectPedestrianIntrusion(const Model::DetectPedestrianIntrusionRequest &request)const;
+			void detectPedestrianIntrusionAsync(const Model::DetectPedestrianIntrusionRequest& request, const DetectPedestrianIntrusionAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			DetectPedestrianIntrusionOutcomeCallable detectPedestrianIntrusionCallable(const Model::DetectPedestrianIntrusionRequest& request) const;
 			DetectVideoLivingFaceOutcome detectVideoLivingFace(const Model::DetectVideoLivingFaceRequest &request)const;
 			void detectVideoLivingFaceAsync(const Model::DetectVideoLivingFaceRequest& request, const DetectVideoLivingFaceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			DetectVideoLivingFaceOutcomeCallable detectVideoLivingFaceCallable(const Model::DetectVideoLivingFaceRequest& request) const;

+ 54 - 0
facebody/include/alibabacloud/facebody/model/DetectPedestrianIntrusionRequest.h

@@ -0,0 +1,54 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_FACEBODY_MODEL_DETECTPEDESTRIANINTRUSIONREQUEST_H_
+#define ALIBABACLOUD_FACEBODY_MODEL_DETECTPEDESTRIANINTRUSIONREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/facebody/FacebodyExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Facebody
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_FACEBODY_EXPORT DetectPedestrianIntrusionRequest : public RpcServiceRequest
+			{
+
+			public:
+				DetectPedestrianIntrusionRequest();
+				~DetectPedestrianIntrusionRequest();
+
+				std::string getRegionType()const;
+				void setRegionType(const std::string& regionType);
+				std::string getImageURL()const;
+				void setImageURL(const std::string& imageURL);
+				Array getRegion()const;
+				void setRegion(const Array& region);
+
+            private:
+				std::string regionType_;
+				std::string imageURL_;
+				Array region_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_FACEBODY_MODEL_DETECTPEDESTRIANINTRUSIONREQUEST_H_

+ 76 - 0
facebody/include/alibabacloud/facebody/model/DetectPedestrianIntrusionResult.h

@@ -0,0 +1,76 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_FACEBODY_MODEL_DETECTPEDESTRIANINTRUSIONRESULT_H_
+#define ALIBABACLOUD_FACEBODY_MODEL_DETECTPEDESTRIANINTRUSIONRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/facebody/FacebodyExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Facebody
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_FACEBODY_EXPORT DetectPedestrianIntrusionResult : public ServiceResult
+			{
+			public:
+				struct Data
+				{
+					struct ElementsItem
+					{
+						struct Box
+						{
+							long left;
+							long top;
+							long right;
+							long bottom;
+						};
+						long boxId;
+						std::string type;
+						long score;
+						bool isIntrude;
+						Box box;
+					};
+					long imageHeight;
+					long imageWidth;
+					std::vector<ElementsItem> elements;
+				};
+
+
+				DetectPedestrianIntrusionResult();
+				explicit DetectPedestrianIntrusionResult(const std::string &payload);
+				~DetectPedestrianIntrusionResult();
+				std::string getMessage()const;
+				Data getData()const;
+				std::string getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string message_;
+				Data data_;
+				std::string code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_FACEBODY_MODEL_DETECTPEDESTRIANINTRUSIONRESULT_H_

+ 36 - 0
facebody/src/FacebodyClient.cc

@@ -699,6 +699,42 @@ FacebodyClient::DetectPedestrianOutcomeCallable FacebodyClient::detectPedestrian
 	return task->get_future();
 }
 
+FacebodyClient::DetectPedestrianIntrusionOutcome FacebodyClient::detectPedestrianIntrusion(const DetectPedestrianIntrusionRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return DetectPedestrianIntrusionOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return DetectPedestrianIntrusionOutcome(DetectPedestrianIntrusionResult(outcome.result()));
+	else
+		return DetectPedestrianIntrusionOutcome(outcome.error());
+}
+
+void FacebodyClient::detectPedestrianIntrusionAsync(const DetectPedestrianIntrusionRequest& request, const DetectPedestrianIntrusionAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, detectPedestrianIntrusion(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+FacebodyClient::DetectPedestrianIntrusionOutcomeCallable FacebodyClient::detectPedestrianIntrusionCallable(const DetectPedestrianIntrusionRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<DetectPedestrianIntrusionOutcome()>>(
+			[this, request]()
+			{
+			return this->detectPedestrianIntrusion(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 FacebodyClient::DetectVideoLivingFaceOutcome FacebodyClient::detectVideoLivingFace(const DetectVideoLivingFaceRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();

+ 62 - 0
facebody/src/model/DetectPedestrianIntrusionRequest.cc

@@ -0,0 +1,62 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/facebody/model/DetectPedestrianIntrusionRequest.h>
+
+using AlibabaCloud::Facebody::Model::DetectPedestrianIntrusionRequest;
+
+DetectPedestrianIntrusionRequest::DetectPedestrianIntrusionRequest() :
+	RpcServiceRequest("facebody", "2019-12-30", "DetectPedestrianIntrusion")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+DetectPedestrianIntrusionRequest::~DetectPedestrianIntrusionRequest()
+{}
+
+std::string DetectPedestrianIntrusionRequest::getRegionType()const
+{
+	return regionType_;
+}
+
+void DetectPedestrianIntrusionRequest::setRegionType(const std::string& regionType)
+{
+	regionType_ = regionType;
+	setBodyParameter("RegionType", regionType);
+}
+
+std::string DetectPedestrianIntrusionRequest::getImageURL()const
+{
+	return imageURL_;
+}
+
+void DetectPedestrianIntrusionRequest::setImageURL(const std::string& imageURL)
+{
+	imageURL_ = imageURL;
+	setBodyParameter("ImageURL", imageURL);
+}
+
+Array DetectPedestrianIntrusionRequest::getRegion()const
+{
+	return region_;
+}
+
+void DetectPedestrianIntrusionRequest::setRegion(const Array& region)
+{
+	region_ = region;
+	setBodyParameter("Region", std::to_string(region));
+}
+

+ 91 - 0
facebody/src/model/DetectPedestrianIntrusionResult.cc

@@ -0,0 +1,91 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/facebody/model/DetectPedestrianIntrusionResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Facebody;
+using namespace AlibabaCloud::Facebody::Model;
+
+DetectPedestrianIntrusionResult::DetectPedestrianIntrusionResult() :
+	ServiceResult()
+{}
+
+DetectPedestrianIntrusionResult::DetectPedestrianIntrusionResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+DetectPedestrianIntrusionResult::~DetectPedestrianIntrusionResult()
+{}
+
+void DetectPedestrianIntrusionResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto dataNode = value["Data"];
+	if(!dataNode["ImageHeight"].isNull())
+		data_.imageHeight = std::stol(dataNode["ImageHeight"].asString());
+	if(!dataNode["ImageWidth"].isNull())
+		data_.imageWidth = std::stol(dataNode["ImageWidth"].asString());
+	auto allElementsNode = dataNode["Elements"]["ElementsItem"];
+	for (auto dataNodeElementsElementsItem : allElementsNode)
+	{
+		Data::ElementsItem elementsItemObject;
+		if(!dataNodeElementsElementsItem["BoxId"].isNull())
+			elementsItemObject.boxId = std::stol(dataNodeElementsElementsItem["BoxId"].asString());
+		if(!dataNodeElementsElementsItem["Type"].isNull())
+			elementsItemObject.type = dataNodeElementsElementsItem["Type"].asString();
+		if(!dataNodeElementsElementsItem["Score"].isNull())
+			elementsItemObject.score = std::stol(dataNodeElementsElementsItem["Score"].asString());
+		if(!dataNodeElementsElementsItem["IsIntrude"].isNull())
+			elementsItemObject.isIntrude = dataNodeElementsElementsItem["IsIntrude"].asString() == "true";
+		auto boxNode = value["Box"];
+		if(!boxNode["Left"].isNull())
+			elementsItemObject.box.left = std::stol(boxNode["Left"].asString());
+		if(!boxNode["Top"].isNull())
+			elementsItemObject.box.top = std::stol(boxNode["Top"].asString());
+		if(!boxNode["Right"].isNull())
+			elementsItemObject.box.right = std::stol(boxNode["Right"].asString());
+		if(!boxNode["Bottom"].isNull())
+			elementsItemObject.box.bottom = std::stol(boxNode["Bottom"].asString());
+		data_.elements.push_back(elementsItemObject);
+	}
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+
+}
+
+std::string DetectPedestrianIntrusionResult::getMessage()const
+{
+	return message_;
+}
+
+DetectPedestrianIntrusionResult::Data DetectPedestrianIntrusionResult::getData()const
+{
+	return data_;
+}
+
+std::string DetectPedestrianIntrusionResult::getCode()const
+{
+	return code_;
+}
+