私信小編01即可獲取大量Python編程資料
原圖 | 修復后 |
# !/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="修復前")
self.init_data_label.place(x=0, y=60, width=80, height=30)
self.result_data_label = Label(self.init_window_name, text="修復后")
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="修復程度(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) # 調用內部方法 加()為直接調用
self.degree_input.place(x=400, y=180, width=150, height=30)
self.repair_button = Button(self.init_window_name, text="修復", 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("提示", "請選擇圖片")
return
self.input_path.delete(0, END)
self.input_path.insert(0, path)
frame = cv2.imread(path)
self.in_frame = frame
# 這里就修復圖片的代碼了
def access_pixels(self):
if self.in_frame is None:
messagebox.showinfo("提示", "請選擇圖片")
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內包含三個元素:按順序為高、寬、通道數
height = frame.shape[0]
weight = frame.shape[1]
channels = frame.shape[2]
showImgHeight = int(height / (weight / 400))
# 這里是轉換rgb 不然 保存下來會變色
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]
# 這里是判斷是不是小黑點
if pv > 23 * (11 - degree):
# 這里就是計算增加白色 原顏色+修復程度*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("提示", "請先修復圖片")
return
path = filedialog.askdirectory()
if path is None or path == '':
messagebox.showinfo("提示", "請選擇輸出路徑")
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()
復制代碼
饅頭是人們平時吃的比較多的一種主食,尤其是北方人,大部分的北方人都是以面食為自己的主食,而且非常喜歡吃饅頭,雖然饅頭剛剛咬上去沒有太大的味道,但是越嚼越甜,喜歡吃饅頭的人不斷增多,現如今也有部分人開始想要自己做饅頭生意。但是大部分的人都知道,其實買的饅頭和自己做的饅頭是有很大區別的,買回來的饅頭看起來白白的,給人一種很有食欲的感覺,自己做出來的饅頭卻往往偏黃,為什么賣饅頭蒸出來的饅頭會這么白呢?
一、加入增白劑
買的饅頭和自己做的饅頭之所以會有明顯差距,是由于賣饅頭的人在做饅頭的過程當中,會經過特殊的處理。眾所周知,當看到一些比較好看的事物時,人們會變得更加有食欲,暗黃的饅頭看起來給人一種很沒有食欲的感覺,所以這個時候部分商家就會對自己的饅頭進行一些簡單的處理,加入色素或者是其他的染料,讓自己的饅頭看起來更白,不過最近幾年這種做法已經被有關部門所制止。
大部分的人由于是在家里制作饅頭,所以只講究其面筋和加入的材料,希望做出來的饅頭是真正衛生又營養的,而做饅頭的人考慮的則主要是饅頭的外表以及饅頭是否能夠被銷售出去,因此在做饅頭過程當中會加入一些特殊材料,這些特殊材料,不僅能夠讓饅頭吃起來更加香甜,更主要的是能夠讓饅頭的外表看上去更加好看,不僅非常的飽滿,而且看上去白凈,非常的好看。
二、操作工藝
除了一些不良商家為了牟利采取的行為外,饅頭發白還與制作工藝有關。要用壓面機反復壓面,以確保面筋的細膩不壓縮,其次,揉面和醒面這2道工序也至關重要,需要嚴格按照規定進行嚴謹操作。制作工藝恰當,設備專業,自然也能制作出白白的饅頭。
了解完了本文之后,大家大概對于這一問題已經有了一個大概的認識,其實雖然外頭賣的饅頭看上去非常的好看,但并不一定有利于人的身體健康,家里做的饅頭雖然看起來不好看,但是卻是非常營養又健康的,如果比較喜歡吃饅頭的話,可以在家里做饅頭,做法非常簡單。