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.7606454078586Nế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.85728484414187Tươ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 pandas3. 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=1Trong 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.6361529548088Như đượ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!