1
白い紙を背景にした写真があり、ノイズ(黄色の点)を取り除き、ピクセルの値(bgr)を取得する必要があります。葉。オブジェクトを検出して平均ピクセル値(BGR)を取得する
私は葉を検出するために緑の閾値を使用し、元の画像でマスクしました。私はピクセル値を取得するためにcv2.meanを使用しましたが、黒の領域/背景を含むすべてのピクセルを数えます。
リーフのピクセル値を取得するにはどうすればよいですか?だから、基本的には葉と黒の背景とマスクされたイメージを持っている
import cv2
import numpy as np
img=cv2.imread('crop21.jpg')
blur=cv2.GaussianBlur(img,(5,5),0)
hsv=cv2.cvtColor(blur,cv2.COLOR_BGR2HSV)
#threshold green
low_g=np.array([35,100,60],np.uint8)
up_g=np.array([85,255,190],np.uint8)
mask=cv2.inRange(hsv,low_g,up_g)
mask_upstate=cv2.bitwise_and(blur, blur, mask=mask)
#get the bgr value
mean=cv2.mean(mask_upstate)
print (mean)
cv2.imshow('image',mask_upstate)
cv2.waitKey(0)
cv2.destroyAllWindows()
関数cv :: countNonZeroでエラーcn == 1が発生しました。それを修正するには? – gygem
マスクはバイナリイメージであり、乗算器の計算は同じ結果を与えるので、mask_upstateではなく、teマスクで行います。ちょうど編集されました! – ebeneditos
ああ、それは働く....ありがとう – gygem