# VAM\_CV SDK

## Installation

1\. Download package VAM\_CV and requirements.txt ลงในโฟลเดอร์ที่ติดตั้ง Visual environment และไลบารี่ OpenCV&#x20;

{% file src="<https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MHxoD3v3NQoXy4trcty%2F-MHy2b3hcIPpYMuHlWXw%2Findustry_machine_vision-0.0.1-py3-none-any.whl?alt=media&token=df35f911-88a3-4962-ab49-82c6e3026b5d>" %}
industry mahine vision
{% endfile %}

{% file src="<https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MHzO6Bnt0pE8-XDbeBc%2F-MHzOaZzI0gLnNtFdLee%2Frequirements.txt?alt=media&token=d4a0fc02-d181-487f-bc31-6b393d11cc26>" %}
requirements.txt
{% endfile %}

* เปิด requirements.txt ทำการลบบรรทัด pkg-resources==0.0.0 และบันทึกการแก้ไข

2\. เปิด terminal เข้าโฟลเดอร์ที่ติดตั้ง Visual environment และไลบารี่ OpenCV&#x20;

```
$ cd opencv
```

3\. เปิด  Visual environment&#x20;

```
## windows
$ <C:path\your\project>\env\Scripts\activate.bat

## ubuntu & mac
$ source venv/bin/activate
```

4\. installation

```
$ pip install industry_machine_vision-0.0.1-py3-none-any.whl
$ pip install -r requirements.txt
```

* check package in env

5\. command “code .” in terminal

6\. create file vam\_color.py and vam\_measuring.py

## SDK

### Color&#x20;

ประกอบไปด้วน 2 ฟังก์ชันการทำงาน

**1.  visualize\_colors**

&#x20;    ใช้ในการค้นหาค่าสีภายในภาพด้วยการรับค่าจำนวนกลุ่มสีจากผู้ใช้มาใช้ในการแบ่งกลุ่มของข้อมูลสีภายในภาพ ซึ่งผลลัพธ์ที่ได้จะมี 2 อย่างคือ ภาพผลลัพธ์การจัดกลุ่มค่าสีที่ผู้ใช้ต้องการและค่าสี RGB ทั้งหมดที่ได้จากการจัดกลุ่ม โดยจะเรียงลำดับจากค่าสีที่พบน้อยที่สุดไปจนถึงค่าสีที่พบมากที่สุดตามลำดับ

```
$ visualize_colors(image, group_colors, height=None, width=None)
```

**Parameters:**

* image => ภาพสี RGB ที่ผู้ใช้ต้องการ
* group\_colors (*integer*) => จำนวนกลุ่มสีที่ผู้ใช้ต้องการ
* height (*integer or None*) => ความสูงของภาพผลลัพธ์การจัดกลุ่มค่าสี
* width (*integer or None*) => ความกว้างของภาพผลลัพธ์ค่าสี

**Return:**

* image => ภาพผลลัพธ์การจัดกลุ่มค่าสี
* RGB(list) => ค่าสี RGB ทั้งหมดที่ได้จากการจัดกลุ่มสี

**Example:**

```
color = VamCV.color()
img,list_colors = color.visualize_colors(image,7)

print(list_colors)

cv2.imshow("Image",img)
cv2.waitKey(0) 
```

![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MHz691Dl4Y7ftD7zCJU%2F-MHzDuugxrFiUCCTR87w%2FScreenshot%20from%202020-09-24%2015-28-37.png?alt=media\&token=7e12c715-c339-46cf-9aca-805a14aab3e8)

**2. color\_detection**&#x20;

&#x20;    ใช้ตรวจจับสีที่ผู้ใช้ต้องการได้เพียงสีเดียว โดยการรับค่าสี RGB ที่ผู้ใช้ต้องการมาเปลี่ยนเป็นค่าสี HSV เพื่อใช้ในการตรวจจับสีในภาพ ซึ่งฟังก์ชันนี้สามารถรับค่าสี RGB จากฟังก์ชัน visualize\_colors มาใช้ได้

```
$ color_detection(image, RGB, range_HSV=None, area=None)
```

**Parameters:**

* image => ภาพสี RGB ที่ผู้ใช้ต้องการ
* RGB (*integer(R,G,B)*) => ค่าสีหรือความสว่างที่มีค่าตั้งแต่ 0-255 ต่อหนึ่งช่องสี
* range\_HSV (*integer or None*) => ค่าช่วงความต่างที่จะนำมาใช้คำนวณหาค่าสีสูงสุดและต่ำสุดของค่าสี HSV เพื่อใช้ในารตรวจจับ
* area (*integer or None*) => พื้นที่ขั้นต่ำของค่าสีที่ผู้ใช้ต้องการ หากพื้นที่ของค่าสีที่เจอมีค่าน้อยกว่าจะไม่ถูกนำมาพิจารณา (pixel)

**Return:**

* image => ภาพการตรวจจับค่าสี
* boxes(list) => พิกัดตำแหน่งของค่าสีที่ได้จากการวาดกรอบตรวจจับ ประกอบด้วย จุดคู่อันดับด้านซ้ายบน, จุดคู่อันดับด้านขวาบน, จุดคู่อันดับด้านล่างขวาและจุดคู่อันดับด้านซ้ายล่างของกรอบตรวจจับ ตามลำดับ

**Example:**

```
color = VamCV.color()

Red = (255,0,0)

img,points = color.color_detection(img, Red, range_HSV=40)

print(points)

cv2.imshow("Image",img)
cv2.waitKey(0) 
```

***ขั้นตอนการเรียกใช้งานใน vam\_color.py***

* import package
* สร้างตัวแปรเรียกใช้ class color
* รับภาพ
* เรียกใช้ฟังก์ชันในการหาค่าสีและตรวจจับสี
* save and run "python vam\_color.py" on terminal

**Code**

```
import cv2
import imutils
from industry_machine_vision import VamCV


color = VamCV.Color()

image = cv2.imread("path/your/image.jpg")
image = imutils.resize(image,width=500)

img,num = color.visualize_colors(image,7)
cv2.imshow("color",img)

detect,p = color.color_detection(image,num[0],40)
cv2.imshow("detect",detect)
cv2.waitKey(0)
```

![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MHz691Dl4Y7ftD7zCJU%2F-MHzEorgFoTH0MhQJEEk%2FScreenshot%20from%202020-09-24%2015-33-33.png?alt=media\&token=3d8c145e-9070-4f8d-bd5b-d0b35192c76d)

### Measurement Object

![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MII6kB5GuybZQaHjFJV%2F-MIJ6o2Qj9MQr1d4MYLH%2Fcoins.jpg?alt=media\&token=3edf46dd-eb63-4507-a850-1209e7aef4ee)

ประกอบไปด้วน 2 ฟังก์ชันการทำงาน

**1. optimize\_image**

&#x20;    ใช้ในการปรับปรุงภาพอย่างง่าย เพื่อใช้ในการหาจุดคู่อันดับ 4 จุดของกรอบตรวจจับวัตถุหรือชิ้นส่วน (จุดคู่อันดับด้านซ้ายบน, จุดคู่อันดับด้านขวาบน, จุดคู่อันดับด้านล่างขวาและจุดคู่อันดับด้านซ้ายล่างตามลำดับ)

```
$ optimize_image(image, lower_threshold, upper_threshold, area=None)
```

**Parameters:**

* image => ภาพสี RGB ที่ผู้ใช้ต้องการ&#x20;
* lower\_threshold (integer) => ขีดจำกัดต่ำสุดสำหรับกระบวนการลบภาพพื้นหลัง มีค่าตั้งแต่ 0-255&#x20;
* upper\_threshold (integer) => ขีดจำกัดสูงสุดสำหรับกระบวนการลบภาพพื้นหลัง มีค่าตั้งแต่ 0-255&#x20;
* area (integer or None) => พื้นที่ขั้นต่ำของค่าสีที่ผู้ใช้ต้องการ หากพื้นที่ของค่าสีที่เจอมีค่าน้อยกว่าจะไม่ถูกนำมาพิจารณา (pixel)

**Return:**

* boxes\[list(float)]: จุดคู่อันดับ 4 จุด(จุดคู่อันดับด้านซ้ายบน, จุดคู่อันดับด้านขวาบน, จุดคู่อันดับด้านล่างขวาและจุดคู่อันดับด้านซ้ายล่างตามลำดับ)

**Example:**

```
mr = VamCV.MeasurementObject()

points = optimize_image(image, 80, 100)
print(points)
```

![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MII6kB5GuybZQaHjFJV%2F-MIJ6yYBCxxPorECEMa2%2FScreenshot%20from%202020-09-28%2016-51-19.png?alt=media\&token=e6ed82c4-d142-44ce-93a6-ffc7f4126e76)

**2. measuring**

&#x20;    ใช้ในการวัดความสูงของวัตถุหรือชิ้นส่วน โดยจะทำการรับค่าจุดคู่อันดับทั้ง 4 จุดของกรอบตรวจจับวัตถุ(จุดคู่อันดับด้านซ้ายบน, จุดคู่อันดับด้านขวาบน, จุดคู่อันดับด้านล่างขวาและจุดคู่อันดับด้านซ้ายล่างตามลำดับ) ขนาดความกว้างจริงของวัตถุหรือชิ้นส่วนพร้อมหน่วยวัดที่ต้องการ

```
$ measuring(image, boxes, real_width, unit)
```

**Parameters:**

* image – ภาพสี RGB ที่ผู้ใช้ต้องการ
* boxes (*list*) – จุดคู่อันดับทั้ง 4 จุดของกรอบตรวจจับวัตถุ(จุดคู่อันดับด้านซ้ายบน, จุดคู่อันดับด้านขวาบน, จุดคู่อันดับด้านล่างขวาและจุดคู่อันดับด้านซ้ายล่างตามลำดับ)
* real\_width (*integer*) – ขนาดความกว้างจริงของวัตถุ
* unit (*string*) – มาตรวัดขนาดความกว้างจริงของวัตถุ

**Return:**

* scale(list): ความกว้าง ความสูงและจุดคู่อันดับของวัตถุที่วัดได้(จุดคู่อันดับด้านซ้ายบน, จุดคู่อันดับด้านขวาบน, จุดคู่อันดับด้านล่างขวาและจุดคู่อันดับด้านซ้ายล่างตามลำดับ)

**Example:**

```
mr = VamCV.MeasurementObject()

measuring = mr.measuring(image,points,2,'cm')
print(measuring)
```

***ขั้นตอนการเรียกใช้งาน vam\_measuring.py***

* import package
* สร้างตัวแปรเรียกใช้ class color
* รับภาพ
* เรียกใช้ฟังก์ชันในการหาจุดพิกัดวัตถุและตรวจวัดขนาด
* save and run "python vam\_measuring.py" on terminal

**Code**

```
import cv2
import imutils
from industry_machine_vision import VamCV

mr = VamCV.MeasurementObject()

image = cv2.imread("path/your/image.jpg")
image = imutils.resize(image,width=500)

points = mr.optimize_image(image,180,255)
print(points)

measuring = mr.measuring(image,points,2,'cm')
print(measuring)
```

![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MClo3nC-1US0rbK8Qau%2F-MII6kB5GuybZQaHjFJV%2F-MIJ7CeGsveCCG2AGCZr%2FScreenshot%20from%202020-09-28%2016-52-21.png?alt=media\&token=367f97eb-3585-415c-9b3f-910b7b8e5e15)
