Hướng dẫn how to calculate average pixel value in python - cách tính giá trị pixel trung bình trong python

Bạn có thể sử dụng np.average:

img = cv2.imread('img.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #convert it to RGB channel plt.imshow(img)

Hãy cắt 1000 hàng đầu tiên (5 hàng đầu tiên trong hình ảnh của bạn là màu trắng nên trung bình sẽ chỉ là 255).

crop_img = img[:1000, :] plt.imshow(crop_img)

Nếu bạn muốn tính trung bình hình ảnh bị cắt hoàn chỉnh (bao gồm 3 kênh RGB) sử dụng:

np.average(crop_img) > 221.7606454078586

Nếu bạn muốn sử dụng trung bình trên 3 kênh:

np.average(crop_img, axis = (0,1)) array([219.85728484, 220.16578896, 225.25886241])

Nếu bạn chỉ muốn trung bình qua một kênh, hãy nói màu đỏ:

np.average(crop_img[:, :, 0]) #replace 0 with 1 for green channel and with 2 for blue channel 219.85728484414187

Tương tự, bạn có thể sử dụng NP.Mean

1. Sơ lượt

Lần này, chúng tôi sẽ giới thiệu quá trình xuất ra giá trị pixel trung bình RGB của đối tượng vào tệp CSV.

Tôi muốn tìm giá trị pixel trung bình của hình ảnh của một đối tượng như một quả táo! Bạn có thể sử dụng nó tại thời điểm đó. Bạn có thể đọc về cách quá trình này được xây dựng trong một bài viết tôi đã đăng lên Qiita trước đó. [[Python] Phân loại táo và lê từ các giá trị pixel bằng máy vectơ hỗ trợ (SVM)] [0] [0] Xử lý phương pháp được mô tả trong bài viết này, "Thu thập giá trị trung bình của các giá trị pixel RGB của mỗi hình ảnh táo và lê".

Thông tin duy nhất cần thiết cho quá trình này là một hình ảnh hiển thị đối tượng. Tuy nhiên, nếu bao gồm nền, nó không thể được tính toán chính xác, vì vậy hãy sử dụng một ứng dụng như sơn để chỉ cắt đối tượng một cách gọn gàng như trong hình dưới đây.

2. Môi trường

Vì OpenCV được sử dụng để xử lý hình ảnh và gấu trúc được sử dụng làm khung dữ liệu, vui lòng cài đặt các thư viện này trước.

pip install opencv-python pip install pandas

3. Mã

Mã ở đây. Như một cảnh báo, vì OpenCV được sử dụng, đầu ra sẽ theo thứ tự của BGR, không phải RGB.

bgr_csv.py

import cv2 import numpy as np import pandas as pd idir = 'input/' odir = 'output/' fname='apple' num_photo=10 bgr = np.zeros((num_photo,3)) for k in range(num_photo): img = cv2.imread(idir + fname + '_' + str(k+1) + '.jpg') #Start from number 1 print(idir + fname + '_' + str(k+1) + '.jpg') h, w, c = img.shape #height, width, channnel #Initialize l=0 b_ave=0; g_ave=0; r_ave=0 for i in range(h): for j in range(w): #Pixel value[0,0,0](Black)を除外してピクセルの和とbgrのPixel valueの合計を計算する if(img[i,j,0] != 0 or img[i,j,1] != 0 or img[i,j,2] != 0 ): l+=1 #Calculate the number of pixels of interest #Calculate the sum of the pixel values of the target pixel b_ave=b_ave+img[i,j,0] g_ave=g_ave+img[i,j,1] r_ave=r_ave+img[i,j,2] #Obtain the average RGB pixel value by dividing the total pixel value by the number of pixels. b_ave=b_ave/l g_ave=g_ave/l r_ave=r_ave/l bgr[k]=np.array([b_ave, g_ave, r_ave]) df = pd.DataFrame(bgr, columns=['blue', 'green', 'red']) #Match with opencv order quasi-BGR df.to_csv(odir + fname + '.csv')

Ví dụ ...

fname='apple' num_photo=1

Trong trường hợp, giá trị trung bình của mỗi giá trị pixel của chỉ một tệp "input / apple_1.jpg" là đầu ra là "đầu ra / apple.csv".

4. Kết quả

Sau khi xử lý hình ảnh của 10 quả táo, tệp apple.csv với giá trị trung bình của 10 hình ảnh BGR sẽ được đầu ra như hiển thị bên dưới.

crop_img = img[:1000, :] plt.imshow(crop_img) 0

,blue,green,red 0,39.88469583593901,28.743374377331637,137.23369201906283 1,83.72563703792319,79.59471228615863,164.77884914463453 2,66.8231805177587,74.52501570023027,141.8854929872305 3,55.2837418388098,45.28968211495237,148.4160869099861 4,37.59397951454073,49.82323881039423,137.30237460066527 5,53.68868757437335,50.963264366051206,142.6121454070861 6,51.277953772145956,64.07145371348116,152.98116860260473 7,50.47702848900108,48.37151099891814,124.46714749368914 8,40.35442093843233,52.0682126390019,137.8299091402224 9,48.18758094199441,55.87655919841865,145.6361529548088

Như được mô tả trong tổng quan, sử dụng đầu ra tệp CSV của Apple và Pear bằng mã này ↓ [[Python] phân loại táo và lê từ các giá trị pixel bằng máy vectơ hỗ trợ (SVM)] [1] [1]: // qiita .com/zessu/các mục/3083CE23E0405565765D Tôi đang làm. Xin hãy xem bài viết này là tốt!

Giá trị pixel trung bình là gì?

Giá trị trung bình là tổng của các giá trị pixel chia cho tổng số giá trị pixel. Các giá trị pixel mỗi pixel đại diện cho một hình ảnh được lưu trữ bên trong máy tính có giá trị pixel mô tả mức độ sáng mà pixel đó và/hoặc nó nên có màu gì.the sum of pixel values divided by the total number of pixel values. Pixel Values Each of the pixels that represents an image stored inside a computer has a pixel value which describes how bright that pixel is, and/or what color it should be.

Làm thế nào để bạn hiển thị giá trị pixel trong Python?

Cú pháp: GetPixel (tự, XY).
Parameters:.
XY: tọa độ pixel, được đưa ra là (x, y) ..
Trả về: Giá trị pixel cho hình ảnh dải đơn, một bộ giá trị pixel cho hình ảnh đa biến ..

Làm cách nào để tìm ra pixel của một hình ảnh?

Chúng ta có thể làm điều này thông qua công thức sau: Giả sử một cửa sổ hoặc hình ảnh có chiều rộng và chiều cao nhất định.Sau đó, chúng ta biết mảng pixel có tổng số phần tử bằng chiều rộng * chiều cao.Đối với bất kỳ điểm x, y đã cho trong cửa sổ, vị trí trong mảng pixel 1 chiều của chúng tôi là: vị trí = x + y*chiều rộng.LOCATION = X + Y*WIDTH.

Làm thế nào để bạn tìm thấy ý nghĩa của một hình ảnh trong Python?

Trung bình: Chỉ cần chia tổng các giá trị pixel cho tổng số - số pixel trong bộ dữ liệu được tính là len (df) * image_size * image_size.

Chủ đề