# จับภาพ - ฮาร์ดแวร์ 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) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้