You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/th/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md

126 lines
11 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3ba7150ffc4a6999f6c3cfb4906ec7df",
"translation_date": "2025-08-27T20:14:07+00:00",
"source_file": "4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md",
"language_code": "th"
}
-->
# จับภาพ - ฮาร์ดแวร์ IoT เสมือน
ในส่วนนี้ของบทเรียน คุณจะเพิ่มเซ็นเซอร์กล้องให้กับอุปกรณ์ IoT เสมือนของคุณ และอ่านภาพจากกล้องนั้น
## ฮาร์ดแวร์
อุปกรณ์ IoT เสมือนจะใช้กล้องจำลองที่ส่งภาพจากไฟล์หรือจากเว็บแคมของคุณ
### เพิ่มกล้องใน CounterFit
เพื่อใช้กล้องเสมือน คุณต้องเพิ่มกล้องในแอป CounterFit
#### งาน - เพิ่มกล้องใน CounterFit
เพิ่มกล้องในแอป CounterFit
1. สร้างแอป Python ใหม่ในคอมพิวเตอร์ของคุณในโฟลเดอร์ชื่อ `fruit-quality-detector` โดยมีไฟล์เดียวชื่อ `app.py` และสร้างสภาพแวดล้อมเสมือนของ Python (virtual environment) จากนั้นเพิ่มแพ็กเกจ pip ของ CounterFit
> ⚠️ คุณสามารถดู [คำแนะนำในการสร้างและตั้งค่าโปรเจกต์ Python ของ CounterFit ในบทเรียนที่ 1 หากจำเป็น](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md)
1. ติดตั้งแพ็กเกจ Pip เพิ่มเติมเพื่อเพิ่ม CounterFit shim ที่สามารถสื่อสารกับเซ็นเซอร์กล้องโดยจำลองบางส่วนของ [แพ็กเกจ Picamera Pip](https://pypi.org/project/picamera/) ตรวจสอบให้แน่ใจว่าคุณติดตั้งจากเทอร์มินัลที่เปิดใช้งาน virtual environment แล้ว
```sh
pip install counterfit-shims-picamera
```
1. ตรวจสอบให้แน่ใจว่าแอปเว็บ CounterFit กำลังทำงานอยู่
1. สร้างกล้อง:
1. ในกล่อง *Create sensor* ในแถบ *Sensors* ให้เลือก *Sensor type* เป็น *Camera*
1. ตั้งค่า *Name* เป็น `Picamera`
1. เลือกปุ่ม **Add** เพื่อสร้างกล้อง
![การตั้งค่ากล้อง](../../../../../translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.th.png)
กล้องจะถูกสร้างและปรากฏในรายการเซ็นเซอร์
![กล้องที่ถูกสร้าง](../../../../../translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.th.png)
## เขียนโปรแกรมกล้อง
ตอนนี้อุปกรณ์ IoT เสมือนสามารถเขียนโปรแกรมเพื่อใช้งานกล้องเสมือนได้แล้ว
### งาน - เขียนโปรแกรมกล้อง
เขียนโปรแกรมสำหรับอุปกรณ์
1. ตรวจสอบให้แน่ใจว่าแอป `fruit-quality-detector` เปิดอยู่ใน VS Code
1. เปิดไฟล์ `app.py`
1. เพิ่มโค้ดต่อไปนี้ที่ด้านบนของไฟล์ `app.py` เพื่อเชื่อมต่อแอปกับ CounterFit:
```python
from counterfit_connection import CounterFitConnection
CounterFitConnection.init('127.0.0.1', 5000)
```
1. เพิ่มโค้ดต่อไปนี้ในไฟล์ `app.py` ของคุณ:
```python
import io
from counterfit_shims_picamera import PiCamera
```
โค้ดนี้นำเข้าไลบรารีที่จำเป็น รวมถึงคลาส `PiCamera` จากไลบรารี counterfit_shims_picamera
1. เพิ่มโค้ดต่อไปนี้ด้านล่างเพื่อเริ่มต้นกล้อง:
```python
camera = PiCamera()
camera.resolution = (640, 480)
camera.rotation = 0
```
โค้ดนี้สร้างออบเจ็กต์ PiCamera และตั้งค่าความละเอียดเป็น 640x480 แม้ว่าจะรองรับความละเอียดที่สูงกว่า แต่ตัวจำแนกภาพ (image classifier) ทำงานกับภาพที่มีขนาดเล็กกว่ามาก (227x227) ดังนั้นจึงไม่จำเป็นต้องจับภาพที่มีขนาดใหญ่กว่า
บรรทัด `camera.rotation = 0` ตั้งค่าการหมุนของภาพเป็นองศา หากคุณต้องการหมุนภาพจากเว็บแคมหรือไฟล์ ให้ตั้งค่าตามความเหมาะสม ตัวอย่างเช่น หากคุณต้องการเปลี่ยนภาพกล้วยในโหมดแนวนอนของเว็บแคมให้เป็นแนวตั้ง ให้ตั้งค่า `camera.rotation = 90`
1. เพิ่มโค้ดต่อไปนี้ด้านล่างเพื่อจับภาพในรูปแบบข้อมูลไบนารี:
```python
image = io.BytesIO()
camera.capture(image, 'jpeg')
image.seek(0)
```
โค้ดนี้สร้างออบเจ็กต์ `BytesIO` เพื่อเก็บข้อมูลไบนารี ภาพจะถูกอ่านจากกล้องในรูปแบบไฟล์ JPEG และเก็บไว้ในออบเจ็กต์นี้ ออบเจ็กต์นี้มีตัวชี้ตำแหน่งเพื่อระบุว่าข้อมูลอยู่ที่ตำแหน่งใด ดังนั้นบรรทัด `image.seek(0)` จะย้ายตำแหน่งกลับไปที่จุดเริ่มต้นเพื่อให้สามารถอ่านข้อมูลทั้งหมดได้ในภายหลัง
1. ด้านล่างนี้ ให้เพิ่มโค้ดต่อไปนี้เพื่อบันทึกภาพลงในไฟล์:
```python
with open('image.jpg', 'wb') as image_file:
image_file.write(image.read())
```
โค้ดนี้เปิดไฟล์ชื่อ `image.jpg` เพื่อเขียน จากนั้นอ่านข้อมูลทั้งหมดจากออบเจ็กต์ `BytesIO` และเขียนลงในไฟล์
> 💁 คุณสามารถจับภาพโดยตรงลงในไฟล์แทนออบเจ็กต์ `BytesIO` ได้โดยส่งชื่อไฟล์ไปยังคำสั่ง `camera.capture` เหตุผลที่ใช้ `BytesIO` คือในภายหลังในบทเรียนนี้ คุณสามารถส่งภาพไปยังตัวจำแนกภาพได้
1. ตั้งค่าภาพที่กล้องใน CounterFit จะจับภาพ คุณสามารถตั้งค่า *Source* เป็น *File* แล้วอัปโหลดไฟล์ภาพ หรือเลือก *Source* เป็น *WebCam* และภาพจะถูกจับจากเว็บแคมของคุณ ตรวจสอบให้แน่ใจว่าคุณเลือกปุ่ม **Set** หลังจากเลือกภาพหรือเลือกเว็บแคม
![CounterFit ตั้งค่าไฟล์เป็นแหล่งภาพ และเว็บแคมแสดงภาพตัวอย่างของคนถือกล้วย](../../../../../translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.th.png)
1. ภาพจะถูกจับและบันทึกเป็น `image.jpg` ในโฟลเดอร์ปัจจุบัน คุณจะเห็นไฟล์นี้ในตัวสำรวจของ VS Code เลือกไฟล์เพื่อดูภาพ หากภาพต้องการการหมุน ให้ปรับบรรทัด `camera.rotation = 0` ตามความเหมาะสมและถ่ายภาพใหม่
> 💁 คุณสามารถหาโค้ดนี้ได้ในโฟลเดอร์ [code-camera/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-camera/virtual-iot-device)
😀 โปรแกรมกล้องของคุณสำเร็จแล้ว!
---
**ข้อจำกัดความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้