・画像ファイルの指定読み出し
・画像の加工1(比較画像を出す)
・加工後の画像の解析
(・それぞれの画像の表示と保存)
を行います。file名:Base.py
途中で入力を求められます。0<aa<bb<255の整数で指定してください。
aa=黒引き階調:最小階調へ引き下げる階調
bb=白とび階調:最大階調へ引き上げる階調
ーーーーー以下コードーーーーー
import numpy as np
import cv2
import sys
import os, tkinter, tkinter.filedialog, tkinter.messagebox
#guiからファイルオープンする関数
def f_opengui():
root = tkinter.Tk()
root.withdraw()
fTyp = [("","*")]
iDir = os.path.abspath(os.path.dirname(__file__))
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
return file
################
#----ここから本文----#
img=cv2.imread(f_opengui(),1)
####以下は直接書き込みの場合
#基本の確認
#img=cv2.imread('c:/temp/ts.jpg',1)
#元ファイルを表示
cv2.imshow('Base',img)
cv2.waitKey(1)
img2=img #編集する画の入れ物
img3=img
#取り込んだ絵のサイズ取得
xm=len(img)
ym=len(img[0])
zm=len(img[0,0])
#ここから今回の画処理専用内容
aa=input("黒引きaa= ")
aa=int(aa)
print(aa)
bb=input("白とびbb=")
bb=int(bb)
print(bb)
##############################################
#imgを加工
for yy in range(ym):
for xx in range(xm):
for zz in range(zm):
if (img[xx,yy,zz]*255/(bb-aa)-255*aa/(bb-aa))<0:
img2[xx,yy,zz]=0
elif (img[xx,yy,zz]*255/(bb-aa)-255*aa/(bb-aa))>255:
img2[xx,yy,zz]=255
else:
img2[xx,yy,zz]=img[xx,yy,zz]*255/(bb-aa)-255*aa/(bb-aa)
zz=0
xx=0
#加工後の最終処理、元絵とどうするか
img2=img2
#保存と表示
cv2.imwrite('c:/temp/after.jpg',img2)
cv2.imshow('After',img2)
#imgを加工
for yy in range(ym):
for xx in range(xm):
if img[xx,yy,0]==255 and img[xx,yy,1]==255 and img[xx,yy,2]==255:
img3[xx,yy]=[0,0,255]
xx=0
#保存と表示
cv2.imwrite('c:/temp/saturation_area.jpg',img3)
cv2.imshow('sat_area',img3)
cv2.waitKey(0)
-----------------------以上---------------------
aa=50, bb=200とした例
Base

After

Saturation Area

以上です。
ad

