opencvとpythonで色抽出
OpenCVを使ってPythonで特定の色を画像から抜き出します
色を数値で表す方法としてRGBがまず上がりますが、今回はHSVという値を使います。
HSV色空間 - Wikipedia
RGBは時のごとくRed, Green, Blueで値で色を表現しますが、
HSVとは色相(Hue)、彩度(Saturation)、明度(Value)で色を表現し画像認識なんかでよく使われます
元データ
この某イカの絵のピンク部分を抜き出していきまs
ソース
#!/usr/bin/python import numpy as np import cv2 # image info image_file = 'ika.jpg' img = cv2.imread(image_file) # detect pink hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) lower = np.array([150, 100, 100]) # 紫に近いピンク upper = np.array([175, 255, 255]) # 赤に近いピンク img_mask = cv2.inRange(hsv, lower, upper) img_color = cv2.bitwise_and(img, img, mask=img_mask) # debug cv2.imwrite("ika_hsv.jpg", img_color)
実行結果
触手の紫を消すために少し修正
lower = np.array([157, 100, 170]) upper = np.array([175, 255, 255])
いい感じにピンクが抽出できました