> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/hi/legacy/legacy-serverless/object-detection.md).

# Object Detection

Hosted API (Legacy) का उपयोग करके ऑब्जेक्ट डिटेक्शन इन्फरेंस चलाने के कई तरीके हैं। आप हमारे विभिन्न SDKs में से किसी एक का उपयोग कर सकते हैं, या हमारे होस्टेड एंडपॉइंट पर एक REST अनुरोध भेज सकते हैं।

{% tabs %}
{% tab title="पायथन" %}
निर्भरताएँ इंस्टॉल करने के लिए, `pip install inference-sdk`.

```python
# inference-sdk आयात करें
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

CLIENT = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key="API_KEY"
).configure(InferenceConfiguration(api_key_transport="header"))

result = CLIENT.infer(your_image.jpg, model_id="football-players-detection-3zvbc/12")
```

{% endtab %}

{% tab title="cURL" %}
**Linux या MacOS**

नामक स्थानीय फ़ाइल के लिए JSON पूर्वानुमान पुनः प्राप्त करना `YOUR_IMAGE.jpg`:

```bash
base64 YOUR_IMAGE.jpg | curl -d @- \\
-H "Authorization: Bearer YOUR_KEY" \\
"https://serverless.roboflow.com/your-model/42"
```

वेब पर कहीं और होस्ट की गई छवि पर उसके URL के माध्यम से अनुमान लगाना (मत भूलें [इसे URL-encode करें](https://www.urlencoder.org/)):

```bash
curl -X POST \\
-H "Authorization: Bearer YOUR_KEY" \\
"https://serverless.roboflow.com/your-model/42?\
image=https%3A%2F%2Fi.imgur.com%2FPEEvqPN.png"
```

**Windows**

आपको इंस्टॉल करना होगा [Windows के लिए curl](https://curl.se/windows/) और [Windows के लिए GNU का base64 टूल](http://gnuwin32.sourceforge.net/packages/coreutils.htm)। ऐसा करने का सबसे आसान तरीका है उपयोग करना [Windows इंस्टॉलर के लिए git](https://git-scm.com/downloads) जिसमें यह भी शामिल है `curl` और `base64` कमांड-लाइन टूल्स, जब आप स्थापना के दौरान "Use Git and optional Unix tools from the Command Prompt" चुनते हैं।

फिर आप ऊपर दिए गए समान कमांडों का उपयोग कर सकते हैं।
{% endtab %}

{% tab title="जावास्क्रिप्ट" %}
**Node.js**

ये उदाहरण अंतर्निहित `fetch` API का उपयोग करते हैं। यह Node.js 18 और बाद के संस्करणों तथा आधुनिक ब्राउज़र में काम करता है, इसलिए कोई निर्भरता इंस्टॉल करने की आवश्यकता नहीं है।

**स्थानीय छवि पर अनुमान लगाना**

```javascript
const fs = require("fs");

const image = fs.readFileSync("YOUR_IMAGE.jpg", {
    encoding: "base64"
});

fetch("https://serverless.roboflow.com/your-model/42", {
    method: "POST",
    headers: {
        "Authorization": "Bearer YOUR_KEY",
        "Content-Type": "application/x-www-form-urlencoded"
    },
    body: image
})
    .then((response) => {
        if (!response.ok) throw new Error("स्थिति " + response.status + " के साथ अनुरोध विफल हुआ");
        return response.json();
    })
    .then((data) => {
        console.log(data);
    })
    .catch((error) => {
        console.log(error.message);
    });
```

**URL के माध्यम से कहीं और होस्ट की गई छवि पर अनुमान लगाना**

```javascript
fetch(
    "https://serverless.roboflow.com/your-model/42?image=" +
        encodeURIComponent("https://i.imgur.com/PEEvqPN.png"),
    {
        method: "POST",
        headers: {
            "Authorization": "Bearer YOUR_KEY"
        }
    }
)
    .then((response) => {
        if (!response.ok) throw new Error("स्थिति " + response.status + " के साथ अनुरोध विफल हुआ");
        return response.json();
    })
    .then((data) => {
        console.log(data);
    })
    .catch((error) => {
        console.log(error.message);
    });
```

**वेब**

हमारे पास रीयल-टाइम ऑन-डिवाइस इन्फ़रेंस उपलब्ध है `roboflow.js`; देखें [दस्तावेज़ यहाँ देखें](/deployment/hi/self-hosted/sdks/web-browser.md).
{% endtab %}

{% tab title="स्विफ्ट/iOS" %}
**स्विफ्ट**

**स्थानीय छवि पर अनुमान लगाना**

```swift
import UIKit

// छवि लोड करें और Base64 में बदलें
let image = UIImage(named: "your-image-path") // अपलोड करने के लिए छवि का पथ, उदाहरण: image.jpg
let imageData = image?.jpegData(compressionQuality: 1)
let fileContent = imageData?.base64EncodedString()
let postData = fileContent!.data(using: .utf8)

// API_KEY, मॉडल और मॉडल संस्करण के साथ Inference Server अनुरोध आरंभ करें
let request = URLRequest(url: URL(string: "https://serverless.roboflow.com/your-model/your-model-version?name=YOUR_IMAGE.jpg")!,timeoutInterval: Double.infinity)
request.setValue("Bearer YOUR_APIKEY", forHTTPHeaderField: "Authorization")
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = postData

// पोस्ट अनुरोध निष्पादित करें
URLSession.shared.dataTask(with: request, completionHandler: { data, response, error in
    
    // प्रतिक्रिया को स्ट्रिंग में पार्स करें
    guard let data = data else {
        print(String(describing: error))
        return
    }
    
    // प्रतिक्रिया स्ट्रिंग को डिक्शनरी में बदलें
    do {
        let dict = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
    } catch {
        print(error.localizedDescription)
    }
    
    // स्ट्रिंग प्रतिक्रिया प्रिंट करें
    print(String(data: data, encoding: .utf8)!)
}).resume()
```

**ऑब्जेक्टिव C**

[ऑब्जेक्टिव-C स्निपेट का अनुरोध करने के लिए यहाँ क्लिक करें।](https://app.roboflow.com/request/snippet.inference-objc)
{% endtab %}

{% tab title="Android" %}
**कोटलिन**

**स्थानीय छवि पर अनुमान लगाना**

```kotlin
import java.io.*
import java.net.HttpURLConnection
import java.net.URL
import java.nio.charset.StandardCharsets
import java.util.*

fun main() {
    // छवि पथ प्राप्त करें
    val filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "YOUR_IMAGE.jpg"
    val file = File(filePath)

    // Base64 एन्कोड करें
    val encodedFile: String
    val fileInputStreamReader = FileInputStream(file)
    val bytes = ByteArray(file.length().toInt())
    fileInputStreamReader.read(bytes)
    encodedFile = String(Base64.getEncoder().encode(bytes), StandardCharsets.US_ASCII)
    val API_KEY = "" // आपका API कुंजी
    val MODEL_ENDPOINT = "dataset/v" // मॉडल एंडपॉइंट सेट करें (Dataset URL में मिला)

    // URL बनाएं
    val uploadURL ="https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?name=YOUR_IMAGE.jpg";

    // HTTP अनुरोध
    var connection: HttpURLConnection? = null
    try {
        // URL के लिए कनेक्शन कॉन्फ़िगर करें
        val url = URL(uploadURL)
        connection = url.openConnection() as HttpURLConnection
        connection.requestMethod = "POST"
        connection.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded")
        connection.setRequestProperty("Content-Length",
                Integer.toString(encodedFile.toByteArray().size))
        connection.setRequestProperty("Authorization", "Bearer " + API_KEY)
        connection.setRequestProperty("Content-Language", "en-US")
        connection.useCaches = false
        connection.doOutput = true

        // अनुरोध भेजें
        val wr = DataOutputStream(
                connection.outputStream)
        wr.writeBytes(encodedFile)
        wr.close()

        // प्रतिक्रिया प्राप्त करें
        val stream = connection.inputStream
        val reader = BufferedReader(InputStreamReader(stream))
        var line: String?
        while (reader.readLine().also { line = it } != null) {
            println(line)
        }
        reader.close()
    } catch (e: Exception) {
        e.printStackTrace()
    } finally {
        connection?.disconnect()
    }
}
main()
```

**URL के माध्यम से कहीं और होस्ट की गई छवि पर अनुमान लगाना**

```kotlin
import java.io.BufferedReader
import java.io.DataOutputStream
import java.io.InputStreamReader
import java.net.HttpURLConnection
import java.net.URL
import java.net.URLEncoder

fun main() {
    val imageURL = "https://i.imgur.com/PEEvqPN.png" // छवि URL बदलें
    val API_KEY = "" // आपका API कुंजी
    val MODEL_ENDPOINT = "dataset/v" // मॉडल एंडपॉइंट सेट करें

    // अपलोड URL
    val uploadURL = "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?image=" + URLEncoder.encode(imageURL, "utf-8");

    // HTTP अनुरोध
    var connection: HttpURLConnection? = null
    try {
        // URL के लिए कनेक्शन कॉन्फ़िगर करें
        val url = URL(uploadURL)
        connection = url.openConnection() as HttpURLConnection
        connection.requestMethod = "POST"
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
        connection.setRequestProperty("Content-Length", Integer.toString(uploadURL.toByteArray().size))
        connection.setRequestProperty("Authorization", "Bearer " + API_KEY)
        connection.setRequestProperty("Content-Language", "en-US")
        connection.useCaches = false
        connection.doOutput = true

        // अनुरोध भेजें
        val wr = DataOutputStream(connection.outputStream)
        wr.writeBytes(uploadURL)
        wr.close()

        // प्रतिक्रिया प्राप्त करें
        val stream = connection.inputStream
        val reader = BufferedReader(InputStreamReader(stream))
        var line: String?
        while (reader.readLine().also { line = it } != null) {
            println(line)
        }
        reader.close()
    } catch (e: Exception) {
        e.printStackTrace()
    } finally {
        connection?.disconnect()
    }
}

main()
```

**जावा**

**स्थानीय छवि पर अनुमान लगाना**

```java
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class InferenceLocal {
    public static void main(String[] args) throws IOException {
        // छवि पथ प्राप्त करें
        String filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "YOUR_IMAGE.jpg";
        File file = new File(filePath);

        // Base64 एन्कोड करें
        String encodedFile;
        FileInputStream fileInputStreamReader = new FileInputStream(file);
        byte[] bytes = new byte[(int) file.length()];
        fileInputStreamReader.read(bytes);
        encodedFile = new String(Base64.getEncoder().encode(bytes), StandardCharsets.US_ASCII);

        String API_KEY = ""; // आपकी API कुंजी
        String MODEL_ENDPOINT = "dataset/v"; // मॉडल एंडपॉइंट

        // URL बनाएं
        String uploadURL = "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?name=YOUR_IMAGE.jpg";

        // HTTP अनुरोध
        HttpURLConnection connection = null;
        try {
            // URL के लिए कनेक्शन कॉन्फ़िगर करें
            URL url = new URL(uploadURL);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

            connection.setRequestProperty("Content-Length", Integer.toString(encodedFile.getBytes().length));
            connection.setRequestProperty("Authorization", "Bearer " + API_KEY);
            connection.setRequestProperty("Content-Language", "en-US");
            connection.setUseCaches(false);
            connection.setDoOutput(true);

            // अनुरोध भेजें
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
            wr.writeBytes(encodedFile);
            wr.close();

            // प्रतिक्रिया प्राप्त करें
            InputStream stream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }

    }

}
```

**URL के माध्यम से कहीं और होस्ट की गई छवि पर अनुमान लगाना**

```java
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class InferenceHosted {
    public static void main(String[] args) {
        String imageURL = "https://i.imgur.com/PEEvqPN.png"; // छवि URL बदलें
        String API_KEY = ""; // आपकी API कुंजी
        String MODEL_ENDPOINT = "dataset/v"; // मॉडल एंडपॉइंट

        // अपलोड URL
        String uploadURL = "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?image="
                + URLEncoder.encode(imageURL, StandardCharsets.UTF_8);

        // HTTP अनुरोध
        HttpURLConnection connection = null;
        try {
            // URL के लिए कनेक्शन कॉन्फ़िगर करें
            URL url = new URL(uploadURL);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

            connection.setRequestProperty("Content-Length", Integer.toString(uploadURL.getBytes().length));
            connection.setRequestProperty("Authorization", "Bearer " + API_KEY);
            connection.setRequestProperty("Content-Language", "en-US");
            connection.setUseCaches(false);
            connection.setDoOutput(true);

            // अनुरोध भेजें
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
            wr.writeBytes(uploadURL);
            wr.close();

            // प्रतिक्रिया प्राप्त करें
            InputStream stream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }
    }
}
```

{% endtab %}

{% tab title="रूबी" %}
**Gemfile**

{% code title="Gemfile" %}

```ruby
source "https://rubygems.org"

gem "httparty", "~> 0.18.1"
gem "base64", "~> 0.1.0"
gem "cgi", "~> 0.2.1"
```

{% endcode %}

**Gemfile.lock**

{% code title="Gemfile.lock" %}

```ruby
GEM
  remote: https://rubygems.org/
  specs:
    base64 (0.1.0)
    cgi (0.2.1)
    httparty (0.18.1)
      mime-types (~> 3.0)
      multi_xml (>= 0.5.2)
    mime-types (3.3.1)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2021.0225)
    multi_xml (0.6.0)

PLATFORMS
  x64-mingw32
  x86_64-linux

DEPENDENCIES
  base64 (~> 0.1.0)
  cgi (~> 0.2.1)
  httparty (~> 0.18.1)

BUNDLED WITH
   2.2.15
```

{% endcode %}

**स्थानीय छवि पर अनुमान लगाना**

```ruby
require 'base64'
require 'httparty'

encoded = Base64.encode64(File.open("YOUR_IMAGE.jpg", "rb").read)
model_endpoint = "dataset/v" # मॉडल एंडपॉइंट सेट करें
api_key = "" # आपकी API कुंजी यहाँ

params = "?name=YOUR_IMAGE.jpg"

response = HTTParty.post(
    "https://serverless.roboflow.com/" + model_endpoint + params,
    body: encoded, 
    headers: {
    'Authorization' => "Bearer " + api_key,
    'Content-Type' => 'application/x-www-form-urlencoded',
    'charset' => 'utf-8'
  })

  puts response

 
```

**URL के माध्यम से कहीं और होस्ट की गई छवि पर अनुमान लगाना**

```ruby
require 'httparty'
require 'cgi'

model_endpoint = "dataset/v" # मॉडल एंडपॉइंट सेट करें
api_key = "" # आपकी API कुंजी यहाँ
img_url = "https://i.imgur.com/PEEvqPN.png" # URL बनाएं

img_url = CGI::escape(img_url)

params =  "?image=" + img_url

response = HTTParty.post(
    "https://serverless.roboflow.com/" + model_endpoint + params,
    headers: {
    'Authorization' => "Bearer " + api_key,
    'Content-Type' => 'application/x-www-form-urlencoded',
    'charset' => 'utf-8'
  })

puts response
```

{% endtab %}

{% tab title="पीएचपी" %}
**स्थानीय छवि पर अनुमान लगाना**

```php
<?php

// छवि को Base64 में एन्कोड करें
$data = base64_encode(file_get_contents("YOUR_IMAGE.jpg"));

$api_key = ""; // API कुंजी सेट करें
$model_endpoint = "dataset/v"; // मॉडल एंडपॉइंट सेट करें (Dataset URL में मिला)

// HTTP अनुरोध के लिए URL
$url = "https://serverless.roboflow.com/" . $model_endpoint
. "?name=YOUR_IMAGE.jpg";

// HTTP अनुरोध सेट अप करें और भेजें
$options = array(
  'http' => array (
    'header' => "Content-type: application/x-www-form-urlencoded\r\n"
              . "Authorization: Bearer " . $api_key . "\r\n",
    'method'  => 'POST',
    'content' => $data
  ));

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
?>
```

**URL के माध्यम से कहीं और होस्ट की गई छवि पर अनुमान लगाना**

```php
<?php

$api_key = ""; // API कुंजी सेट करें
$model_endpoint = "dataset/v"; // मॉडल एंडपॉइंट सेट करें (Dataset URL में मिला)
$img_url = "https://i.imgur.com/PEEvqPN.png";

// HTTP अनुरोध के लिए URL
$url =  "https://serverless.roboflow.com/" . $model_endpoint
. "?image=" . urlencode($img_url);

// HTTP अनुरोध सेट अप करें और भेजें
$options = array(
  'http' => array (
    'header' => "Content-type: application/x-www-form-urlencoded\r\n"
              . "Authorization: Bearer " . $api_key . "\r\n",
    'method'  => 'POST'
  ));

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
?>
```

{% endtab %}

{% tab title="गो" %}
**स्थानीय छवि पर अनुमान लगाना**

```go
package main

import (
    "bufio"
    "encoding/base64"
    "fmt"
    "io/ioutil"
    "os"
	"net/http"
	"strings"
)

func main() {
	api_key := ""  // आपकी API कुंजी
	model_endpoint := "dataset/v" // मॉडल एंडपॉइंट सेट करें

    // डिस्क पर फ़ाइल खोलें।
    f, _ := os.Open("YOUR_IMAGE.jpg")

    // संपूर्ण JPG को बाइट स्लाइस में पढ़ें।
    reader := bufio.NewReader(f)
    content, _ := ioutil.ReadAll(reader)

    // base64 के रूप में एन्कोड करें।
    data := base64.StdEncoding.EncodeToString(content)
	uploadURL := "https://serverless.roboflow.com/" + model_endpoint + "?name=YOUR_IMAGE.jpg"

	req, _ := http.NewRequest("POST", uploadURL, strings.NewReader(data))
    req.Header.Set("Authorization", "Bearer "+api_key)
    req.Header.Set("Accept", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

   	bytes, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(bytes))

}
```

**URL के माध्यम से कहीं और होस्ट की गई छवि पर अनुमान लगाना**

```go
package main

import (
    "fmt"
	"net/http"
	"net/url"
  "io/ioutil"
)

func main() {
	api_key := ""  // आपकी API कुंजी
	model_endpoint := "dataset/v" // मॉडल एंडपॉइंट सेट करें
	img_url := "https://i.ibb.co/jzr27x0/YOUR-IMAGE.jpg"


	uploadURL := "https://serverless.roboflow.com/" + model_endpoint + "?image=" + url.QueryEscape(img_url)

	req, _ := http.NewRequest("POST", uploadURL, nil)
    req.Header.Set("Authorization", "Bearer "+api_key)
    req.Header.Set("Accept", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

   	bytes, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(bytes))


}
```

{% endtab %}

{% tab title=".NET" %}
**स्थानीय छवि पर अनुमान लगाना**

```csharp
using System;
using System.IO;
using System.Net;
using System.Text;

namespace InferenceLocal
{
    class InferenceLocal
    {

        static void Main(string[] args)
        {
            byte[] imageArray = System.IO.File.ReadAllBytes(@"YOUR_IMAGE.jpg");
            string encoded = Convert.ToBase64String(imageArray);
            byte[] data = Encoding.ASCII.GetBytes(encoded);
            string API_KEY = ""; // आपकी API कुंजी
            string MODEL_ENDPOINT = "dataset/v"; // मॉडल एंडपॉइंट सेट करें

            // URL बनाएं
            string uploadURL =
                    "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?name=YOUR_IMAGE.jpg";

            // सेवा अनुरोध कॉन्फ़िगरेशन
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            // अनुरोध कॉन्फ़िगर करें
            WebRequest request = WebRequest.Create(uploadURL);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Headers.Add("Authorization", "Bearer " + API_KEY);
            request.ContentLength = data.Length;

            // डेटा लिखें
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            // प्रतिक्रिया प्राप्त करें
            string responseContent = null;
            using (WebResponse response = request.GetResponse())
            {
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader sr99 = new StreamReader(stream))
                    {
                        responseContent = sr99.ReadToEnd();
                    }
                }
            }

            Console.WriteLine(responseContent);

        }
    }
}
```

**URL के माध्यम से कहीं और होस्ट की गई छवि पर अनुमान लगाना**

```csharp
using System;
using System.IO;
using System.Net;
using System.Web;

namespace InferenceHosted
{
    class InferenceHosted
    {
        static void Main(string[] args)
        {
            string API_KEY = ""; // आपकी API कुंजी
            string imageURL = "https://i.ibb.co/jzr27x0/YOUR-IMAGE.jpg";
            string MODEL_ENDPOINT = "dataset/v"; // मॉडल एंडपॉइंट सेट करें

            // URL बनाएं
            string uploadURL =
                    "https://serverless.roboflow.com/" + MODEL_ENDPOINT
                    + "?image=" + HttpUtility.UrlEncode(imageURL);

            // सर्विस पॉइंट कॉन्फ़िगरेशन
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            // HTTP अनुरोध कॉन्फ़िगर करें
            WebRequest request = WebRequest.Create(uploadURL);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Headers.Add("Authorization", "Bearer " + API_KEY);
            request.ContentLength = 0;

            // प्रतिक्रिया प्राप्त करें
            string responseContent = null;
            using (WebResponse response = request.GetResponse())
            {
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader sr99 = new StreamReader(stream))
                    {
                        responseContent = sr99.ReadToEnd();
                    }
                }
            }

            Console.WriteLine(responseContent);

        }
    }
}
```

{% endtab %}

{% tab title="और" %}
{% hint style="info" %}
Lenny, हमारे AI-संचालित चैटबॉट, से अपने लिए एक कोड उदाहरण बनाने के लिए कहने की कोशिश करें!
{% endhint %}
{% endtab %}
{% endtabs %}

## API संदर्भ

### URL

<mark style="color:हरा;">`POST`</mark> `https://serverless.roboflow.com/:projectId/:versionNumber`

<table data-search="false"><thead><tr><th width="157">नाम</th><th width="101">प्रकार</th><th>विवरण</th></tr></thead><tbody><tr><td>projectId</td><td>स्ट्रिंग</td><td>डेटासेट नाम का URL-सुरक्षित संस्करण। आप इसे वेब UI में मुख्य प्रोजेक्ट दृश्य पर URL देखकर या अपने मॉडल को प्रशिक्षित करने के बाद अपने डेटासेट संस्करण के ट्रेन परिणाम अनुभाग में "Get curl command" बटन पर क्लिक करके पा सकते हैं।</td></tr><tr><td>संस्करण</td><td>संख्या</td><td>वह संस्करण संख्या जो आपके डेटासेट के संस्करण की पहचान करती है</td></tr></tbody></table>

{% hint style="info" %}
देखें कि अपना प्रोजेक्ट ID और संस्करण संख्या कैसे प्राप्त करें [यहाँ](https://docs.roboflow.com/reference/authentication/authentication/workspace-and-project-ids#how-to-retrieve-a-project-id-and-version-number).
{% endhint %}

आप REST अनुरोध के माध्यम से Hosted API (Legacy) पर छवि भेजने के दो तरीके हैं:

* एक संलग्न करें `base64` एन्कोड की गई छवि को `POST` अनुरोध बॉडी में
* का उपयोग करके किसी इमेज फ़ाइल का URL भेजें `image` URL क्वेरी
  * उदा.: `https://serverless.roboflow.com/:datasetSlug/:versionNumber?image=https://imageurl.com`

#### क्वेरी पैरामीटर

<table data-search="false"><thead><tr><th width="120">नाम</th><th width="106">प्रकार</th><th>विवरण</th></tr></thead><tbody><tr><td>image</td><td>स्ट्रिंग</td><td>जोड़ने के लिए छवि का URL। यदि आपकी छवि कहीं और होस्ट की गई है, तो इसका उपयोग करें। (जब आप अनुरोध बॉडी में base64-एन्कोड की गई छवि POST नहीं करते हैं, तब यह आवश्यक है.)<br><br><strong>नोट:</strong> इसे URL-encode करना न भूलें।</td></tr><tr><td>classes</td><td>स्ट्रिंग</td><td>भविष्यवाणियों को केवल कुछ विशेष वर्गों तक सीमित करें। कॉमा से अलग की गई स्ट्रिंग के रूप में प्रदान करें।<br><br><strong>उदाहरण:</strong> dog,cat<br><br><strong>डिफ़ॉल्ट:</strong> उपस्थित नहीं (सभी वर्ग दिखाएँ)</td></tr><tr><td>ओवरलैप</td><td>संख्या</td><td><p>अधिकतम प्रतिशत (0-100 के पैमाने पर) जितना एक ही वर्ग की बाउंडिंग बॉक्स भविष्यवाणियों को एक ही बॉक्स में मिलाने से पहले आपस में ओवरलैप करने की अनुमति है।</p><p><strong>डिफ़ॉल्ट:</strong> 30</p><p>इस पैरामीटर का RF-DETR मॉडल्स पर कोई प्रभाव नहीं पड़ता।</p></td></tr><tr><td>विश्वास</td><td>संख्या</td><td><p>0-100 के पैमाने पर लौटाए गए अनुमानों के लिए एक थ्रेशोल्ड। कम संख्या अधिक अनुमान लौटाएगी। अधिक संख्या कम लेकिन अधिक निश्चित अनुमान लौटाएगी।</p><p><strong>डिफ़ॉल्ट:</strong> 40</p></td></tr><tr><td>stroke</td><td>संख्या</td><td><p>भविष्यवाणियों के चारों ओर प्रदर्शित बाउंडिंग बॉक्स की चौड़ाई (पिक्सेल में) (केवल तब प्रभावी होती है जब <code>format</code> है <code>image</code>).</p><p><strong>डिफ़ॉल्ट:</strong> 1</p></td></tr><tr><td>labels</td><td>boolean</td><td><p>क्या भविष्यवाणियों पर टेक्स्ट लेबल दिखाने हैं या नहीं (केवल तब प्रभावी होती है जब <code>format</code> है <code>image</code>).</p><p><strong>डिफ़ॉल्ट:</strong> false</p></td></tr><tr><td>format</td><td>स्ट्रिंग</td><td><p><strong>विकल्प:</strong></p><ul><li><strong>json:</strong> JSON पूर्वानुमानों की एक सरणी लौटाता है। (response format टैब देखें)।</li><li><strong>image:</strong> एक <code>Content-Type</code> का <code>image/jpeg</code>.</li></ul><p><strong>डिफ़ॉल्ट</strong>: <code>json</code></p></td></tr><tr><td>api_key</td><td>स्ट्रिंग</td><td>आपकी API कुंजी (आपके workspace API settings पृष्ठ से प्राप्त)</td></tr></tbody></table>

### अनुरोध बॉडी

<table data-search="false"><thead><tr><th width="104">प्रकार</th><th>विवरण</th></tr></thead><tbody><tr><td>स्ट्रिंग</td><td>एक base64-एन्कोड की गई छवि। (जब आप क्वेरी पैरामीटर में छवि URL पास नहीं करते हैं, तब यह आवश्यक है.)</td></tr></tbody></table>

साथ एक बाइनरी ब्लॉब के रूप में एनोटेटेड पूर्वानुमानों वाली एक छवि लौटाता है `कंटेंट टाइप होना चाहिए` एक स्ट्रिंग बॉडी के साथ।

## प्रतिक्रिया प्रारूप

Hosted API inference endpoint, साथ ही हमारे अधिकांश SDKs, एक लौटाते हैं `JSON` अनुमानों की एक array वाला ऑब्जेक्ट लौटाता है। प्रत्येक अनुमान के निम्नलिखित गुण होते हैं:

* `x` = पहचाने गए ऑब्जेक्ट का क्षैतिज केंद्र बिंदु
* `y` = पहचाने गए ऑब्जेक्ट का ऊर्ध्वाधर केंद्र बिंदु
* `width` = बाउंडिंग बॉक्स की चौड़ाई
* `height` = बाउंडिंग बॉक्स की ऊँचाई
* `class` = पहचाने गए ऑब्जेक्ट का वर्ग लेबल
* `विश्वास` = यह मॉडल का विश्वास है कि पहचाने गए ऑब्जेक्ट का सही लेबल और स्थिति निर्देशांक हैं

यहाँ REST API से एक उदाहरण प्रतिक्रिया ऑब्जेक्ट है:

```json
{
    "predictions": [
        {
            "x": 189.5,
            "y": 100,
            "width": 163,
            "height": 186,
            "class": "helmet",
            "confidence": 0.544
        }
    ],
    "image": {
        "width": 2048,
        "height": 1371
    }
}
```

यह `image` विशेषता में इन्फ़रेंस के लिए भेजी गई इमेज की ऊँचाई और चौड़ाई शामिल होती है। बाउंडिंग बॉक्स गणनाओं के लिए आपको इन मानों का उपयोग करना पड़ सकता है।

## Inference API JSON आउटपुट से बॉक्स बनाना

बाउंडिंग बॉक्स रेंडर करने के लिए फ्रेमवर्क और पैकेज पोज़िशनल प्रारूपों में अलग-अलग हो सकते हैं। प्रतिक्रिया की `JSON` ऑब्जेक्ट की प्रॉपर्टीज़ को देखते हुए, निम्नलिखित नियमों के किसी संयोजन का उपयोग करके हमेशा एक बाउंडिंग बॉक्स बनाया जा सकता है:

* केंद्र बिंदु हमेशा (`x`,`y`)
* कोने के बिंदु `(x1, y1)` और `(x2, y2)` का पता इस प्रकार लगाया जा सकता है:
  * `x1` = `x - (width/2)`
  * `y1` = `y - (height/2)`
  * `x2` = `x + (width/2)`
  * `y2` = `y + (height/2)`

कोने के बिंदुओं का तरीका एक सामान्य पैटर्न है और इसे जैसी लाइब्रेरी में देखा जा सकता है `Pillow` जब निर्माण करते हैं `बॉक्स` ऑब्जेक्ट को, ताकि एक `Image`.

पूर्वानुमानों के साथ काम करते समय पाए गए सभी डिटेक्शनों पर इटरेट करना न भूलें `पूर्वानुमान`!

```python
# Pillow लाइब्रेरी से उदाहरण बॉक्स ऑब्जेक्ट
for bounding_box in detections:
    x1 = bounding_box['x'] - bounding_box['width'] / 2
    x2 = bounding_box['x'] + bounding_box['width'] / 2
    y1 = bounding_box['y'] - bounding_box['height'] / 2
    y2 = bounding_box['y'] + bounding_box['height'] / 2
    box = (x1, x2, y1, y2)
```
