python画像処理日記【グレースケール化】
画像出力
# -*- coding: utf-8 -*- #from mutagen.mp3 import MP3 as mp3 import cv2 import numpy as np import pygame from PIL import Image import matplotlib.pyplot as plt #%matplotlib inline #画像ファイルの読み込み img = cv2.imread("marubatu.png") #ウィンドウの描画 plt.figure(figsize=(5,5)) #何してるか分からん img2 = img[:,:,::-1] #x軸、y軸のメモリ設定(今回は空?) plt.xticks([]),plt.yticks([]) #画像描画 plt.imshow(img) plt.show()
出力結果
グレースケール変換
# -*- coding: utf-8 -*- #from mutagen.mp3 import MP3 as mp3 import cv2 import numpy as np import pygame from PIL import Image import matplotlib.pyplot as plt #%matplotlib inline #画像ファイルの読み込み img = cv2.imread("marubatu.png") #ウィンドウの描画 #plt.figure(figsize=(5,5)) #何してるか分からん ##img2 = img[:,:,::-1] #x軸、y軸のメモリ設定(今回は空?) #plt.xticks([]),plt.yticks([]) #画像描画 #plt.imshow(img) #plt.show() #グレースケール変換 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #gray.jpgとして変数grayを保存 cv2.imwrite("gray.jpg",gray) #gray.jpgを読み込む img_p = cv2.imread("gray.jpg") #分からん img_p2 = img[:,:,::-1] plt.figure(figsize=(5,5)) plt.xticks([]),plt.yticks([]) plt.imshow(img_p) plt.show()
出力結果
ネガポジ変換で反転
# -*- coding: utf-8 -*- #from mutagen.mp3 import MP3 as mp3 import cv2 import numpy as np import pygame from PIL import Image import matplotlib.pyplot as plt #%matplotlib inline #画像ファイルの読み込み img = cv2.imread("marubatu.png") #ウィンドウの描画 #plt.figure(figsize=(5,5)) #何してるか分からん ##img2 = img[:,:,::-1] #x軸、y軸のメモリ設定(今回は空?) #plt.xticks([]),plt.yticks([]) #画像描画 #plt.imshow(img) #plt.show() #グレースケール変換 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #gray.jpgとして変数grayを保存 #cv2.imwrite("gray.jpg",gray) #gray.jpgを読み込む #img_p = cv2.imread("gray.jpg") #分からん #img_p2 = img[:,:,::-1] #plt.figure(figsize=(5,5)) #plt.xticks([]),plt.yticks([]) #plt.imshow(img_p) #plt.show() edges = cv2.Canny(gray,50,150,apertureSize = 3) cv2.imwrite("edges.jpg",edges) img_p = cv2.imread('edges.jpg') img_p2 = img[:,:,::-1] plt.figure(figsize=(5,5)) plt.xticks([]),plt.yticks([]) plt.imshow(img_p) plt.show()
出力結果
ハフ変換で直線検出
# -*- coding: utf-8 -*- #from mutagen.mp3 import MP3 as mp3 import cv2 import numpy as np import pygame from PIL import Image import matplotlib.pyplot as plt #%matplotlib inline #画像ファイルの読み込み img = cv2.imread("marubatu.png") #ウィンドウの描画 #plt.figure(figsize=(5,5)) #何してるか分からん ##img2 = img[:,:,::-1] #x軸、y軸のメモリ設定(今回は空?) #plt.xticks([]),plt.yticks([]) #画像描画 #plt.imshow(img) #plt.show() #グレースケール変換 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #gray.jpgとして変数grayを保存 #cv2.imwrite("gray.jpg",gray) #gray.jpgを読み込む #img_p = cv2.imread("gray.jpg") #分からん #img_p2 = img[:,:,::-1] #plt.figure(figsize=(5,5)) #plt.xticks([]),plt.yticks([]) #plt.imshow(img_p) #plt.show() edges = cv2.Canny(gray,50,150,apertureSize = 3) #cv2.imwrite("edges.jpg",edges) #img_p = cv2.imread('edges.jpg') #img_p2 = img[:,:,::-1] #plt.figure(figsize=(5,5)) #plt.xticks([]),plt.yticks([]) #plt.imshow(img_p) #plt.show() lines = cv2.HoughLinesP(edges, #入力画像 rho = 1,#ピクセル単位で表される投票空間の距離分解能 theta=np.pi/360,#ラジアン単位で示される投票空間の角度分解能 threshold = 100,#投票の閾値パラメータ minLineLength=200,#最小の線分長 maxLineGap=6)#2点が同一戦場にあるとみなす場合に許容される最大距離 #print(lines[:5]) for line in lines: x1, y1, x2, y2 = line[0] #赤線を引く red_line_img = cv2.line(img,(x1,y1),(x2,y2),(255,0,0),3) cv2.imwrite("output.jpg",red_line_img) img_p = cv2.imread('output.jpg') imgr_p2 = img[:,:,::-1] plt.figure(figsize=(5,5)) plt.xticks([]),plt.yticks([]) plt.imshow(img_p) plt.show()
出力結果
ここだけ思ったものが出ないので調べておきたい。
総括
pythonの画像処理楽しい