用意する物
Python
Anaconda
環境
Anaconda
Jupyter Notebook
Python
以下のサイト様を参考にしました。
https://qiita.com/summer4an/items/306acc5d38169f880ba8
以下のプログラムは、同人誌等のモザイクの場所を塗り替え、切り取り、貼り付ける、未完成のプログラム。
二つに分ける。このプログラムが二番目。
下のプログラムは、モザイクの場所を検出し、塗り替え、透過して、画像の上に貼り付けるプログラム。
二回起動する必要がある。
画像フォルダのパスは変更可能。
下のプログラムをJupyter Notebookに貼り付けて起動。
from PIL import Image
import cv2
import numpy as np
import pathlib
import glob
import os
import sys
args = sys.argv
if len(args) != 2:
print("too few argument.") #sys.exit(1)
#対象フォルダ
input_dir = r"C:\Users\user\Desktop\jpd"
保存するファルダ
output_dir = r"C:\Users\user\Desktop\jpdsave"
保存するファルダのファイル一覧
output_dir2 = glob.glob(r"C:\Users\user\Desktop\jpdsave/*.png")
#英語のフォルダ
engput_dir = r"C:\Users\user\Desktop\engd"
#フォルダ内に保存されているファイル一覧
image_list = glob.glob(r"C:\Users\user\Desktop\jpd/*.png")
#英語フォルダ内に保存されているファイル一覧
image_listen = glob.glob(r"C:\Users\user\Desktop\engd/*.png")
#英語と日本語を合わせた画像
image_EnJp = r"C:\Users\user\Desktop\EnandJp"
if not os.path.exists(output_dir):
os.mkdir(output_dir)
#if
#os.mkdir(output_dir2)
#img_rgb
#dst
#img_gray
#img_gray
#img_gray
#img_gray
#cv2
for t in range(len(image_list)):
img_rgb = cv2.imread(image_list[t]) dst = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2BGRA) img_gray = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY) img_gray = cv2.Canny(img_gray,10,20) img_gray = 255-img_gray img_gray = cv2.GaussianBlur(img_gray,(3,3),0)
#img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) #グレースケールに #img_gray = cv2.Canny(img_gray,10,20) #エッジ検出 #img_gray = 255-img_gray #白黒反転 #img_gray = cv2.GaussianBlur(img_gray,(3,3),0) for i in range(10,20+1): pattern_filename = "pattern"+str(i)+"x"+str(i)+".png" template = cv2.imread(pattern_filename, 0) w, h = template.shape[::-1]
img_kensyutu_kekka = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED) threshold = 0.3 loc = np.where(img_kensyutu_kekka >= threshold) for pt in zip(*loc[::-1]): cv2.rectangle(dst, pt, (pt[0] + w, pt[1] + h), (0,0,255), -1)
#cv2.imwrite(str(t)+'.png',dst) cv2.imwrite(os.path.join(output_dir,str(t)+'.png'),dst)
#フォルダ名を日本語やカタカナにするとエラー、ファイル名はそろえる
for q in range(len(image_listen)):
base_path = Image.open(image_listen[q]) logo_path = Image.open(output_dir2[q]) cop_base_path = base_path.copy() cop_base_path.paste(logo_path,(0,0),logo_path) #cop_base_path.save('output'+str(q)+'.png') cop_base_path.save(os.path.join(image_EnJp,'output'+str(q)+'.png'))
#base_path.paste(logo_path,(0,0),logo_path) #base_path.save(os.path.join(image_EnJp,'output'+str(q)+'.png'))
#base_path
#logo_path
#out_path
#base
#logo
#base
#base
#for
#base_path = cv2.imread(image_listen[y]) #dst2 = cv2.cvtColor(base_path,cv2.COLOR_BGR2BGRA) #for b in range(len(output_dir2)): #logo_path = cv2.imread(output_dir2[y]) #gousei = cv2.addWeighted(base_path,alpha,logo_path,alpha,0) #cv2.imwrite(os.path.join(image_EnJp,str(y)+'.png'),gousei)
#cv2
#cv2
#cv2
cv2.imshow('window1', dst)
cv2.imshow('window2', img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()