python 3ピクチャを読み出して階調化する4つの方法(OpenCV、PIL.Image、TensorFlow方法)まとめ
1892 ワード
画像を処理するときは、画像を読み取って階調図に変換することが多い.穴に入ったばかりのシロとして、私はこのブログで4つの処理方法を記録しました.
パッケージを最初にインポート:
方法1:OpenCVを使用して画像を読み取りながら、画像を階調図に変換する.
運転結果を下図に示します.
方法2:OpenCVを使用して、まず画像を読み取り、階調図に変換します.
実行結果は次のとおりです.
方法3:PILライブラリのImageモジュールを使用する:
実行結果は次のとおりです.
PILライブラリのImageモジュールのconvert()関数を使用する方法については、ブログを参照してください.https://www.2cto.com/kf/201603/492898.html
方法四:TensorFlow方法:
実行結果は次のとおりです.
TensorFlowの方法の結果は,上記の3つの方法の処理結果と若干異なることが分かる.したがって、画像を処理する際には、方法の一貫性を保つことが望ましく、この方法で画像を読み取り終わってから、不要なバグが画像処理結果に影響を与えないように、別の方法で画像を処理しないことが望ましい.原文:https://blog.csdn.net/Tony_Stark_Wang/article/details/80006366
パッケージを最初にインポート:
import numpy as np
import cv2
import tensorflow as tf
from PIL import Image
方法1:OpenCVを使用して画像を読み取りながら、画像を階調図に変換する.
import numpy as np
import cv2
import tensorflow as tf
from PIL import Image
運転結果を下図に示します.
方法2:OpenCVを使用して、まず画像を読み取り、階調図に変換します.
img = cv2.imread(imgfile)
#print(img.shape)
#print(img)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Y = 0.299R + 0.587G + 0.114B
print("cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) :")
print(' :{}'.format(gray_img.shape))
print(" :%s" % type(gray_img))
print(gray_img)
実行結果は次のとおりです.
方法3:PILライブラリのImageモジュールを使用する:
img = np.array(Image.open(imgfile).convert('L'), 'f') # , , ,L = 0.299R + 0.587G + 0.114B。'f' float
print("Image :")
print(' :{}'.format(img.shape))
print(" :%s" % type(img))
print(img)
実行結果は次のとおりです.
PILライブラリのImageモジュールのconvert()関数を使用する方法については、ブログを参照してください.https://www.2cto.com/kf/201603/492898.html
方法四:TensorFlow方法:
with tf.Session() as sess:
img = tf.read_file(imgfile) # ,
img_data = tf.image.decode_jpeg(img, channels=3) #
#img_data = sess.run(tf.image.decode_jpeg(img, channels=3))
img_data = sess.run(tf.image.rgb_to_grayscale(img_data)) #
print(' :{}'.format(img_data.shape))
print(" :%s" % type(img_data))
print(img_data)
実行結果は次のとおりです.
TensorFlowの方法の結果は,上記の3つの方法の処理結果と若干異なることが分かる.したがって、画像を処理する際には、方法の一貫性を保つことが望ましく、この方法で画像を読み取り終わってから、不要なバグが画像処理結果に影響を与えないように、別の方法で画像を処理しないことが望ましい.原文:https://blog.csdn.net/Tony_Stark_Wang/article/details/80006366