# Pixel and Color

### Pixel    &#x20;

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

{% hint style="info" %}
*ตัวอย่าง*&#x20;

&#x20;    ภาพมีขนาด 600x450 หมายความว่า ภาพกว้าง 600 และสูง 450 พิกเซล ถ้าเทียบเป็นตารางพิกเซลจะได้ 600 คอลัมน์และ 450 แถว โดยรวมแล้วมี 600  x 450 = 270,000  พิกเซล  &#x20;
{% endhint %}

&#x20;    พิกเซลส่วนใหญ่แสดงเป็นสองลักษณะ คือ ระดับสีเทา (Gray scale) และสี (RGB) ในภาพระดับสีเทาแต่ละพิกเซลมีค่าระหว่าง 0 ถึง 255 โดยที่ค่า 0 จะตรงกับ "ดำ" และ 255  เป็น "สีขาว"&#x20;

![](https://gurus.pyimagesearch.com/wp-content/uploads/2015/03/image_gradient.jpg)

&#x20;    ภาพสี (RGB) ในหนึ่งพิเซลจะประกอบไปด้วย 3 ค่า คือ สีแดง (Red) สีเขียว (Green) และสีน้ำเงิน (Blue) โดยทั้งสามค่าจะมีค่าความเข้มอยู่ในช่วง 0 ถึง 255 เช่นเดียวกับภาพระดีบสีเทา สามารถเขียยนให้อยู่ในรูป tuple ได้ดังนี้ (R,G,B)

&#x20;    ![](https://gurus.pyimagesearch.com/wp-content/uploads/2015/03/color_examples.jpg)\
&#x20;   &#x20;

&#x20;    หากเปรียบเทียบภาพเป็นตาราง จุดพิกัดเริ่มต้น (0,0) ของภาพจะอยู่ที่มุมซ้ายบน และจุดพิกัดสุดท้าย (x,y) ของภาพจะอยู่ที่มุมล่างขวาของภาพ ซึ่งจุดพิกัดสุดท้ายจะมีขนาดเท่ากับขนาดของภาพเสมอ ดังภาพตัวอย่างต่อไปนี้

\
![](https://paper-attachments.dropbox.com/s_ED8F33D726DEEB274B91070CD54DD9822C8EEE25152706EDC8932020507EB3FC_1600702510314_Screenshot+from+2020-09-21+22-34-53.png)

#### **Example:**

```
import cv2
import imutils 

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

(h, w) = image.shape[:2]
(b, g, r) = image[0, 0]
print("Pixel at (0, 0) - Red: {r}, Green: {g}, Blue: {b}".format(r=r, g=g, b=b)) 

image[0, 0] = (0, 0, 255)
(b, g, r) = image[0, 0]
print("Pixel at (0, 0) - Red: {r}, Green: {g}, Blue: {b}".format(r=r, g=g, b=b))

cv2.imshow("Original", image)
cv2.waitKey(0)
```

* บรรทัดที่ 1-2 : การเรียกใช้ไลบารี่ที่เกี่ยวข้อง
* บรรทัดที่ 6 : รับตัวแปรขนาดลำดับที่ 0 และลำดับที่ 1 ของภาพ โดยที่ขนาดของภาพจะถูกเก็บในลักษณะอาร์เรย์ ซึ่งจะเรียงจาก ความสูง (h) ความกว้าง (w) และช่องสีของภาพ (3 สี) ตามลำดับ
* บรรทัดที่ 8 รับตัวแปรค่าสีที่ตำแหนงเริ่มต้น (0,0) ของภาพ โดย**ค่าสีของภาพจะถูกเก็บในลักษณะอาร์เรย์ ซึ่งจะเรียงจาก สีน้ำเงิน** **(Blue)** **สีเขียว** **(Green)** **และสีแดง** **(Red)** **ตามลำดับ**

![](https://paper-attachments.dropbox.com/s_ED8F33D726DEEB274B91070CD54DD9822C8EEE25152706EDC8932020507EB3FC_1600703230861_Screenshot+from+2020-09-21+22-46-51.png)

###

### **C**onversion Color&#x20;

&#x20;    การแปลงภาพจากพื้นที่สีหนึ่งไปยังอีกที่หนึ่ง    &#x20;

```
$ cv2.cvtColor(image, flag)
```

**Parameter:**

* image => ภาพที่ต้องการนำมาใช้งาน
* flag =>  กำหนดประเภทของการแปลง

{% hint style="info" %}
flag ที่นำมาใช้

* cv2.COLOR\_BGR2GRAY = แปลงภาพสี BGR เป็นภาพสีเทา
* cv2.COLOR\_BGR2HSV = แปลงภาพสี BGR เป็นภาพสี HSV
  {% endhint %}

\
**Example:**

```
import cv2
import imutils 

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

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

cv2.imshow("Gray Scale",gray)
cv2.waitKey(0)

```

![](https://paper-attachments.dropbox.com/s_ED8F33D726DEEB274B91070CD54DD9822C8EEE25152706EDC8932020507EB3FC_1600706905003_Screenshot+from+2020-09-21+23-48-09.png)
