画像データ処理の基本-OpenCV
Install OpenCV
OpenCV tutorial
上のリンクはPythonチュートリアルページのリンクです.さまざまな高度な例を紹介した.その中の画像から見ると特定の色の領域のみを抽出する例です.
前述の例示的なプレゼンテーションでは、画像は最終的に[width、Height、Channel]形状を有する配列であり、コンピュータのビジョンは最終的にこのような配列形式のデータ(?)を処理する.表示されます.
画像の内容に関心のある部分に特定の色がある場合は、この情報によって必要な部分と背景を区別し、関心のある部分だけを分けることができます.
この例では、画像の検索や青の検索を容易にするために、BGR(RGB)からHSVに色空間を変換し、その色に一致する領域のみを表示する.
読んでいるとおかしいです.
BGR???
OpenCVは、RGBではなくBGRを逆方向に使用します.
ソース:https://docs.opencv.org/master/df/d9d/tutorial_py_colorspaces.html
次のコードはOpenCVチュートリアルのWebサイトの例です.
ビデオデータとか...いいえ...
だから私たちは....私はウェブサイトの上のピクチャーを切り取ります!!
変形のコードは以下のようになります.
ファイルから画像を読み込む関数.
リンク
カラー空間を変換する関数です.
リンク
適用(low blue,upper blue)は、対応する画素が1であり、対応しない画素が0である配列を返します.
2枚の画像を受け取ってANDビット演算を行い、上のコードを見るとこの機能(?)必要ではないので、2枚とも同じ画像(img,img)を入れて、最終的には同じ画像が現れます.でもシートパックを一緒にして、該当するエリアだけ開けます.
リンク OpenCV公式ホームページ 上の例 チュートリアル OpenCV github
pip install opencv-python
OpenCVはオープンソースの非専用コンピュータライブラリです.その他言語(C++、C、Java...)ジェジュンでも使えますが、画像処理の高度な機能を実現しているので、読み込みや使用が容易です.OpenCV tutorial
上のリンクはPythonチュートリアルページのリンクです.さまざまな高度な例を紹介した.その中の画像から見ると特定の色の領域のみを抽出する例です.
前述の例示的なプレゼンテーションでは、画像は最終的に[width、Height、Channel]形状を有する配列であり、コンピュータのビジョンは最終的にこのような配列形式のデータ(?)を処理する.表示されます.
画像の内容に関心のある部分に特定の色がある場合は、この情報によって必要な部分と背景を区別し、関心のある部分だけを分けることができます.
この例では、画像の検索や青の検索を容易にするために、BGR(RGB)からHSVに色空間を変換し、その色に一致する領域のみを表示する.
読んでいるとおかしいです.
BGR???
OpenCVは、RGBではなくBGRを逆方向に使用します.
ソース:https://docs.opencv.org/master/df/d9d/tutorial_py_colorspaces.html
次のコードはOpenCVチュートリアルのWebサイトの例です.
import cv2 as cv
import numpy as np
cap = cv.VideoCapture(0)
while(1):
# Take each frame
_, frame = cap.read()
# Convert BGR to HSV
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
# define range of blue color in HSV
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
# Threshold the HSV image to get only blue colors
mask = cv.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv.bitwise_and(frame,frame, mask= mask)
cv.imshow('frame',frame)
cv.imshow('mask',mask)
cv.imshow('res',res)
k = cv.waitKey(5) & 0xFF
if k == 27:
break
cv.destroyAllWindows()
しかし、私たちは知っています.ビデオデータとか...いいえ...
だから私たちは....私はウェブサイトの上のピクチャーを切り取ります!!
変形のコードは以下のようになります.
import os
import cv2 as cv # 눈치 챘겠지만 OpenCV를 import 할 때 이름을 cv2라고 해줘야한다.
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
img_path = os.getcwd() + '/python_image_proc/data/practice.png'
img = cv.imread(img_path)
# Convert BGR to HSV
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
# define range of blue color in HSV
lower_blue = np.array([100,100,100])
upper_blue = np.array([130,255,255])
# Threshold the HSV image to get only blue colors
mask = cv.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv.bitwise_and(img, img, mask=mask)
# BGR은 OpenCV에서의 RGB표현이니 matplotlib에서 표현하려면 RGB로 다시 바꿔야한다.
# plt가 기본적으로 grid를 그려서 그래프를 표현하기 때문에 grid를 False로 설정해준다.
plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
plt.grid(False)
plt.show()
plt.imshow(cv.cvtColor(mask, cv.COLOR_BGR2RGB))
plt.grid(False)
plt.show()
plt.imshow(cv.cvtColor(res, cv.COLOR_BGR2RGB))
plt.grid(False)
plt.show()
上記の例を説明します.cv.imread()
"Loads an image from a file."ファイルから画像を読み込む関数.
リンク
cvtColor()
"Converts an image from one color space to another."カラー空間を変換する関数です.
リンク
cv.inRange()
私たちが望んでいる部分だけを抽出する仕事です.適用(low blue,upper blue)は、対応する画素が1であり、対応しない画素が0である配列を返します.
# 수치로 파란색 부분을 정의
lower_blue = np.array([100,100,100])
upper_blue = np.array([130,255,255])
# 위 값들을 기준으로 이미지에서 마스크를 생성한다.
mask = cv.inRange(hsv, lower_blue, upper_blue)
cv.bitwise_and()
"computes bitwise conjunction of the two arrays (dst = src1 & src2) Calculates the per-element bit-wise conjunction of two arrays or an array and a scalar."# Bitwise-AND mask and original image
res = cv.bitwise_and(img, img, mask=mask)
元の画像とmaskの値をAND演算し、必要な部分を返します.2枚の画像を受け取ってANDビット演算を行い、上のコードを見るとこの機能(?)必要ではないので、2枚とも同じ画像(img,img)を入れて、最終的には同じ画像が現れます.でもシートパックを一緒にして、該当するエリアだけ開けます.
リンク
cvtColor()
BGRはOpenCVで使用されるRGB方式であり、MatplotlibはRGB方式で返さなければならない.plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
plt.grid(False)
plt.show()
plt.imshow(cv.cvtColor(mask, cv.COLOR_BGR2RGB))
plt.grid(False)
plt.show()
plt.imshow(cv.cvtColor(res, cv.COLOR_BGR2RGB))
plt.grid(False)
plt.show()
リファレンス
Reference
この問題について(画像データ処理の基本-OpenCV), 我々は、より多くの情報をここで見つけました https://velog.io/@dyeudsla/이미지-데이터-처리의-기본-OpenCVテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol