私信小編01即可獲取大量Python編程資料
原圖 | 修復(fù)后 |
# !/usr/bin/python3
import threading
import uuid
from tkinter import *
from tkinter import filedialog, messagebox
import cv2
from PIL import ImageTk, Image
class MY_GUI():
def __init__(self, init_window_name):
self.init_window_name = init_window_name
self.out_frame = None
self.in_frame = None
# 繪制窗口
def set_init_window(self):
self.init_window_name.title("圖片處理") # 窗口名
self.init_window_name.geometry('950x681+10+10')
self.input_label = Label(self.init_window_name, text="路徑:")
self.input_label.place(x=0, y=0, width=80, height=30)
self.input_path = Entry(self.init_window_name)
self.input_path.place(x=80, y=0, width=850, height=30)
self.init_data_label = Label(self.init_window_name, text="修復(fù)前")
self.init_data_label.place(x=0, y=60, width=80, height=30)
self.result_data_label = Label(self.init_window_name, text="修復(fù)后")
self.result_data_label.place(x=550, y=60, width=80, height=30)
self.in_img_button = Button(self.init_window_name, text="選擇圖片", bg="lightblue", width=10,
command=self.select_in_frame)
self.in_img_button.place(x=400, y=100, width=150, height=30)
self.degree_label = Label(self.init_window_name, text="修復(fù)程度(1-10)")
self.degree_label.place(x=400, y=150, width=150, height=30)
self.degree_input = Spinbox(self.init_window_name, from_=1, to=10) # 調(diào)用內(nèi)部方法 加()為直接調(diào)用
self.degree_input.place(x=400, y=180, width=150, height=30)
self.repair_button = Button(self.init_window_name, text="修復(fù)", bg="lightblue", width=10,
command=self.access_pixels)
self.repair_button.place(x=400, y=230, width=150, height=30)
self.d_img_button = Button(self.init_window_name, text="保存", bg="lightblue", width=10,
command=self.d_img)
self.d_img_button.place(x=400, y=280, width=150, height=30)
def select_in_frame(self):
path = filedialog.askopenfilename()
if path is None or path == '':
messagebox.showinfo("提示", "請(qǐng)選擇圖片")
return
self.input_path.delete(0, END)
self.input_path.insert(0, path)
frame = cv2.imread(path)
self.in_frame = frame
# 這里就修復(fù)圖片的代碼了
def access_pixels(self):
if self.in_frame is None:
messagebox.showinfo("提示", "請(qǐng)選擇圖片")
return
degreeStr = self.degree_input.get()
if degreeStr is None or degreeStr == '':
degreeStr = '0'
degree = int(degreeStr)
if degree < 1:
degree = 1
elif degree > 10:
degree = 10
frame = self.in_frame.copy()
print(frame.shape) # shape內(nèi)包含三個(gè)元素:按順序?yàn)楦摺挕⑼ǖ罃?shù)
height = frame.shape[0]
weight = frame.shape[1]
channels = frame.shape[2]
showImgHeight = int(height / (weight / 400))
# 這里是轉(zhuǎn)換rgb 不然 保存下來(lái)會(huì)變色
b1, g1, r1 = cv2.split(self.in_frame.copy())
rgb_img1 = cv2.merge([r1, g1, b1])
im = Image.fromarray(cv2.resize(rgb_img1, (400, showImgHeight)))
imgtk = ImageTk.PhotoImage(image=im)
self.before2_img = Label(self.init_window_name, image=imgtk).place(x=0, y=90, width=400,
height=showImgHeight)
print("weight : %s, height : %s, channel : %s" % (weight, height, channels))
for row in range(height): # 遍歷高
for col in range(weight): # 遍歷寬
for c in range(channels): # 便利通道
pv = frame[row, col, c]
# 這里是判斷是不是小黑點(diǎn)
if pv > 23 * (11 - degree):
# 這里就是計(jì)算增加白色 原顏色+修復(fù)程度*10,防止太白 顏色都一樣
if (pv + degree * 10) > 255:
frame[row, col, c] = 255
else:
frame[row, col, c] = (pv + degree * 10)
# 這里是判斷黑色,是不是需要更黑一些
if pv < degree * 15:
frame[row, col, c] = 0
self.out_frame = frame
b, g, r = cv2.split(self.out_frame.copy())
rgb_img = cv2.merge([r, g, b])
im2 = Image.fromarray(cv2.resize(rgb_img, (400, showImgHeight)))
imgtk2 = ImageTk.PhotoImage(image=im2)
self.img2 = Label(self.init_window_name, image=imgtk2).place(x=550, y=90, width=400, height=showImgHeight)
self.img2.place()
def d_img(self):
if self.out_frame is None:
messagebox.showinfo("提示", "請(qǐng)先修復(fù)圖片")
return
path = filedialog.askdirectory()
if path is None or path == '':
messagebox.showinfo("提示", "請(qǐng)選擇輸出路徑")
return
savepath = path + "/repair-" + str(uuid.uuid4()) + ".png"
cv2.imwrite(savepath, self.out_frame)
if __name__ == '__main__':
init_window = Tk()
ZMJ_PORTAL = MY_GUI(init_window)
ZMJ_PORTAL.set_init_window()
init_window.mainloop()
復(fù)制代碼
饅頭是人們平時(shí)吃的比較多的一種主食,尤其是北方人,大部分的北方人都是以面食為自己的主食,而且非常喜歡吃饅頭,雖然饅頭剛剛咬上去沒(méi)有太大的味道,但是越嚼越甜,喜歡吃饅頭的人不斷增多,現(xiàn)如今也有部分人開(kāi)始想要自己做饅頭生意。但是大部分的人都知道,其實(shí)買的饅頭和自己做的饅頭是有很大區(qū)別的,買回來(lái)的饅頭看起來(lái)白白的,給人一種很有食欲的感覺(jué),自己做出來(lái)的饅頭卻往往偏黃,為什么賣饅頭蒸出來(lái)的饅頭會(huì)這么白呢?
一、加入增白劑
買的饅頭和自己做的饅頭之所以會(huì)有明顯差距,是由于賣饅頭的人在做饅頭的過(guò)程當(dāng)中,會(huì)經(jīng)過(guò)特殊的處理。眾所周知,當(dāng)看到一些比較好看的事物時(shí),人們會(huì)變得更加有食欲,暗黃的饅頭看起來(lái)給人一種很沒(méi)有食欲的感覺(jué),所以這個(gè)時(shí)候部分商家就會(huì)對(duì)自己的饅頭進(jìn)行一些簡(jiǎn)單的處理,加入色素或者是其他的染料,讓自己的饅頭看起來(lái)更白,不過(guò)最近幾年這種做法已經(jīng)被有關(guān)部門所制止。
大部分的人由于是在家里制作饅頭,所以只講究其面筋和加入的材料,希望做出來(lái)的饅頭是真正衛(wèi)生又營(yíng)養(yǎng)的,而做饅頭的人考慮的則主要是饅頭的外表以及饅頭是否能夠被銷售出去,因此在做饅頭過(guò)程當(dāng)中會(huì)加入一些特殊材料,這些特殊材料,不僅能夠讓饅頭吃起來(lái)更加香甜,更主要的是能夠讓饅頭的外表看上去更加好看,不僅非常的飽滿,而且看上去白凈,非常的好看。
二、操作工藝
除了一些不良商家為了牟利采取的行為外,饅頭發(fā)白還與制作工藝有關(guān)。要用壓面機(jī)反復(fù)壓面,以確保面筋的細(xì)膩不壓縮,其次,揉面和醒面這2道工序也至關(guān)重要,需要嚴(yán)格按照規(guī)定進(jìn)行嚴(yán)謹(jǐn)操作。制作工藝恰當(dāng),設(shè)備專業(yè),自然也能制作出白白的饅頭。
了解完了本文之后,大家大概對(duì)于這一問(wèn)題已經(jīng)有了一個(gè)大概的認(rèn)識(shí),其實(shí)雖然外頭賣的饅頭看上去非常的好看,但并不一定有利于人的身體健康,家里做的饅頭雖然看起來(lái)不好看,但是卻是非常營(yíng)養(yǎng)又健康的,如果比較喜歡吃饅頭的話,可以在家里做饅頭,做法非常簡(jiǎn)單。