山内セミナー(2018/10/31)

関連サイトと資料

講義中に試したプログラム

test1.py
import cv2
    
filename = 'h1.jpg'
img = cv2.imread(filename, cv2.IMREAD_UNCHANGED)
cv2.imshow("Halloween", img)
print('最初の画像:', img.shape)
h, w, c = img.shape
print('幅=',w,'高さ=',h)
	
filename2 = 'k1.jpg'
img2 = cv2.imread(filename2, cv2.IMREAD_UNCHANGED)
cv2.imshow("Anal", img2)
print('二番目の画像:', img2.shape)
h2, w2, c2 = img2.shape
print('幅=',w2,'高さ=',h2)
	
cv2.waitKey(0)
cv2.destroyAllWindows()

test2.py
import cv2
    
# 定数定義
ORG_WINDOW_NAME = 'Original Image'
GRAY_WINDOW_NAME = 'Grayscale'
CANNY_WINDOW_NAME = 'Edge Detect by Canny method'
    
ORG_FILE_NAME = 'sample2.jpg'
GRAY_FILE_NAME = 'sample2_gray.png'
CANNY_FILE_NAME = 'sample2_canny.png'
    
# 元の画像を読み込む
org_img = cv2.imread(ORG_FILE_NAME, cv2.IMREAD_UNCHANGED)
# グレースケールに変換
gray_img = cv2.imread(ORG_FILE_NAME, cv2.IMREAD_GRAYSCALE)
# エッジ抽出
canny_img = cv2.Canny(gray_img, 50, 110)
    
cv2.imshow(ORG_WINDOW_NAME, org_img)
cv2.imshow(GRAY_WINDOW_NAME, gray_img)
cv2.imshow(CANNY_WINDOW_NAME, canny_img)
    
# ファイルに保存
cv2.imwrite(GRAY_FILE_NAME, gray_img)
cv2.imwrite(CANNY_FILE_NAME, canny_img)
    
# 終了処理
cv2.waitKey(0)
cv2.destroyAllWindows()

画像の読み込みと表示

以下のプログラムを実際に動かしてみよう。

画像読み込みと表示.py
import cv2
	
filename = 'sample1.jpg'
img = cv2.imread(filename, cv2.IMREAD_UNCHANGED)
cv2.imshow("Original Image", img)
	
cv2.waitKey(0)
cv2.destroyAllWindows()

処理対象ファイルは以下の「sample1.jpg」とする。

エッジ検出

以下のプログラムを実際に動かしてみよう。

エッジ検出.py
import cv2
	
# 定数定義
ORG_WINDOW_NAME = 'Original Image'
GRAY_WINDOW_NAME = 'Grayscale'
CANNY_WINDOW_NAME = 'Edge Detect by Canny method'
	
ORG_FILE_NAME = 'sample2.jpg'
GRAY_FILE_NAME = 'sample2_gray.png'
CANNY_FILE_NAME = 'sample2_canny.png'
	
# 元の画像を読み込む
org_img = cv2.imread(ORG_FILE_NAME, cv2.IMREAD_UNCHANGED)
# グレースケールに変換
gray_img = cv2.imread(ORG_FILE_NAME, cv2.IMREAD_GRAYSCALE)
# エッジ抽出
canny_img = cv2.Canny(gray_img, 50, 110)
	
cv2.imshow(ORG_WINDOW_NAME, org_img)
cv2.imshow(GRAY_WINDOW_NAME, gray_img)
cv2.imshow(CANNY_WINDOW_NAME, canny_img)
	
# ファイルに保存
cv2.imwrite(GRAY_FILE_NAME, gray_img)
cv2.imwrite(CANNY_FILE_NAME, canny_img)
	
# 終了処理
#cv2.waitKey(0)
cv2.destroyAllWindows()

処理対象ファイルは以下の「sample2.jpg」とする。

sample2_gray.png

sample2_canny.png

画像生成

以下のプログラムを実際に動かしてみよう。

日の丸の作成.py
import numpy as np
import cv2
import math
	
width = 640
height = 480
	
# イメージ生成
img = np.zeros((height, width, 3), np.uint8)
	
# 処理
cx = width/2
cy = height/2
for y in range(height):
	for x in range(width):
		dx = x - cx
		dy = y - cy
		if math.sqrt(dx * dx + dy * dy) <= 150:
			img[y, x] = [0, 0, 255]
		else:
			img[y, x] = [255, 255, 255]
	
# ファイルに保存
cv2.imwrite('JapanFlag.png', img)
	
# 表示
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

JapanFlag.png