魚眼モドキ | python3Xのブログ

python3Xのブログ

ここでは40代、50代の方が日々の生活で役に立つ情報や私の趣味であるプログラム、Excelや科学に関する内容で投稿する予定です。

魚眼レンズで覗いた状態そのものではないので

こういった名前にしました

 

あくまでも 遊び感覚です

 

ただし、加工には結構時間が掛かります

 

まずは コードをアップします

そして、後ほど出来上がった

 

 魚眼レンズで覗いた 風 の 画像を

 

アップします

 

そしてこの後暫くは ニューロ言語プログラミング 

ウォーミングアップをする予定です

 

以降の10件ほどは ナンダコリャ! 状態になること必至です

どうかご容赦ください

<(_ _)>

 

 

 

コード

"""
from PIL import Image
import matplotlib.pyplot as plt

#画像の読み込み
beautiful_view = Image.open("lenna.png")

#画像を表示して確認
plt.imshow(beautiful_view)

#画像のリサイズ
small_beautiful_view = beautiful_view.resize((255, 255))

#リサイズした画像を表示して確認
plt.imshow(small_beautiful_view)

#リサイズした画像を名前をつけて保存
small_beautiful_view.save("lenna2.png")
"""


import matplotlib.pyplot as plt
import numpy as np
import cv2
import math
s = 1
# load image
img = cv2.imread('lenna2.png')
#img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# show image with matplotlib
pix = img.shape[0]
x = np.linspace(-1,1,pix+1) # define square
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.gray()
import sys
# point is distance from the viewpoint.
plt.figure(figsize=(5,5))
for i in range(pix):
    sys.stdout.write(str(i))
    sys.stdout.write(" ")
    for j in range(pix):
        p=pix/2
        q=pix/8
        L1 = p / (np.sqrt(q**2 + (i-pix/2)**2 + (j-pix/2)**2))
        L2 = p / (np.sqrt(q**2 + (i+1-pix/2)**2 + (j-pix/2)**2))
        L3 = p / (np.sqrt(q**2 + (i+1-pix/2)**2 + (j+1-pix/2)**2))
        L4 = p / (np.sqrt(q**2 + (i-pix/2)**2 + (j+1-pix/2)**2))
        A = np.array([[L1, 0, 0, 0], [0, L2, 0, 0], [0, 0, L3, 0], [0, 0, 0, L4]])
        B = np.array([x[i],x[i+1],x[i+1],x[i]])
        C = np.array([x[j],x[j],x[j+1],x[j+1]])
        tx = np.dot(A, B)
        ty = np.dot(A, C)
        clr_b = np.double(img[ pix - j - 1 , i,0])/256
        clr_g = np.double(img[pix - j - 1 , i,1])/256
        clr_r = np.double(img[pix - j - 1 , i,2])/256       
        plt.fill(tx,ty,color=(clr_r,clr_g,clr_b))
plt.gca().set_aspect('equal', adjustable='box')
sc = 1.1
plt.xlim(-s*sc,s*sc)
plt.ylim(-s*sc,s*sc)
plt.savefig("gyogan.png")
plt.show()