しぐれの戯言箱

技術的なメモ書き、ポケモンの調整記事、ソシャゲ奮闘記…etc

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()

出力結果
f:id:shiguderika:20191022120441p:plain

グレースケール変換

# -*- 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()

出力結果
f:id:shiguderika:20191022120449j:plain

ネガポジ変換で反転

# -*- 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()

出力結果
f:id:shiguderika:20191022121600j:plain

ハフ変換で直線検出

# -*- 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()

出力結果
f:id:shiguderika:20191022134259j:plain
ここだけ思ったものが出ないので調べておきたい。

総括

pythonの画像処理楽しい