전체 글
- 무료 툴 사이트! 2024.10.30 2
- Python 손글씨 검출 GUI 2024.09.27
- Python PyQt 2024.09.27 4
- Python 손글씨 검출 2024.09.27 6
- python YOLOv5 사용방법 2024.09.27 2
- 빠다롤 2024.09.20
- 클랩피자 2024.09.20 3
- 코스트코 장보기! 2024.09.04 2
무료 툴 사이트!
Python 손글씨 검출 GUI
import sys
from distutils.dir_util import copy_tree
from PyQt5.QtCore import QProcess, Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
import numpy as np
import cv2
import tensorflow as tf
form_class = uic.loadUiType("cnn_pj.ui")[0]
class WindowClass(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
# ----------------------------↓↓↓변수↓↓↓-----------------------------------
# 모델
self.model_path = ""
# 데이터셋 파일 저장 리스트
self.dataset_list_dir = ""
# 데이터셋 적용폴더 저장 리스트
self.dataset_dir = ""
# 결과폴더 절대경로
self.result_dir = ""
# 텍스트 데이터 모든파일의 절대경로
self.text_all_list = []
# 그림 데이터 모든파일의 절대경로
self.img_all_list = []
# 화면에 표시된 데이터셋 파일과 결과파일의 절대값 주소
self.original_img = ""
self.result_img_img = ""
# treeView 목록 파일을 클릭하면 그 파일의 절대값을 저장
self.tree_View_file_click = ""
# 마진조절
self.margin = 15
# area조절
self.area = 1000
# ----------------------------↑↑↑변수↑↑↑-----------------------------------
# ----------------------------↓↓↓버튼↓↓↓-----------------------------------
# 모델/데이터셋 불러오기 버튼
self.pushButton_2.clicked.connect(self.datasetDirSelect)
# 결과폴더 선택버튼
self.pushButton_7.clicked.connect(self.resultDir)
# 리셋버튼
self.pushButton_5.clicked.connect(self.reset)
# 마진조정버튼
self.pushButton_margin.clicked.connect(self.marginC)
# area조정버튼
self.pushButton_area.clicked.connect(self.areaC)
# 결과확인 버튼 test
self.pushButton_result.clicked.connect(self.numberDetection)
# ----------------------------↑↑↑버튼↑↑↑-----------------------------------
# ----------------------------↓↓↓함수들↓↓↓--- --------------------------------
# 모델위치 선택 함수
def modelSelect(self):
file_path = QFileDialog.getOpenFileName(self, 'Attach File')[0]
self.model_path = file_path
# 데이터셋이 들어있는 폴더를 선택하는 함수
def datasetDirSelect(self):
file_path = QFileDialog.getExistingDirectory(self, "select Directory")
self.dataset_list_dir = file_path
self.model_file_system = QFileSystemModel()
self.model_file_system.setRootPath(file_path)
self.model_file_system.setReadOnly(False)
self.treeView.setModel(self.model_file_system)
self.treeView.setRootIndex(self.model_file_system.index(file_path))
self.treeView.doubleClicked.connect(lambda index: self.treeViewDoubleClicked1(index))
self.treeView.setDragEnabled(True)
self.treeView.setColumnWidth(0, 300)
# treeView 더블클릭 시 절대값 추출함수
def treeViewDoubleClicked1(self, index):
self.tree_View_file_click = self.model_file_system.filePath(index)
self.original_img = self.tree_View_file_click
pixmap = QPixmap(self.tree_View_file_click)
pixmap = pixmap.scaled(self.label.size(), aspectRatioMode=True)
self.label.setPixmap(pixmap)
def treeViewDoubleClicked2(self, index):
self.tree_View_file_click = self.model_file_system.filePath(index)
self.result_img = self.tree_View_file_click
pixmap = QPixmap(self.tree_View_file_click)
pixmap = pixmap.scaled(self.label_2.size(), aspectRatioMode=True)
self.label_2.setPixmap(pixmap)
# 실행버튼 함수
def runFile(self):
copy_tree(self.dataset_list_dir, self.dataset_dir)
file_path = self.model_path
process = QProcess(self)
process.start('python', [file_path])
# 데이터셋을 적용할 폴더 선택 함수
def datasetDir(self):
directory_path = QFileDialog.getExistingDirectory(self, "select Directory")
self.dataset_dir = directory_path
# 결과폴더 선택
def resultDir(self):
file_path = QFileDialog.getExistingDirectory(self, "select Directory")
self.result_dir = file_path
print(self.result_dir)
self.model_file_system = QFileSystemModel()
self.model_file_system.setRootPath(file_path)
self.model_file_system.setReadOnly(False)
self.treeView_2.setModel(self.model_file_system)
self.treeView_2.setRootIndex(self.model_file_system.index(file_path))
self.treeView_2.doubleClicked.connect(lambda index: self.treeViewDoubleClicked2(index))
self.treeView_2.setDragEnabled(True)
self.treeView_2.setColumnWidth(0, 300)
def reset(self):
self.label.clear()
self.label_2.clear()
self.lineEdit_area.clear()
self.lineEdit_margin.clear()
self.margin = 15
self.area = 1000
def marginC(self):
text = self.lineEdit_margin.text()
self.margin = text
def areaC(self):
text = self.lineEdit_area.text()
self.area = text
def numberDetection(self, pyqtExceptionHandler=None):
src = cv2.imread(self.original_img)
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
gray = 255 - gray
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
gray = cv2.dilate(gray, kernel, iterations=1)
ret_val, binImg = cv2.threshold(gray, 100, 255, cv2.THRESH_OTSU)
ret_val, gray = cv2.threshold(gray, 94, 255, cv2.THRESH_TOZERO)
n_blob, labelImg, stats, centroid = cv2.connectedComponentsWithStats(binImg)
model = tf.keras.models.load_model("cnn_model.h5")
result = []
margin = self.margin
try:
for i in range(1, n_blob):
x, y, w, h, area = stats[i]
if area > (self.area):
x -= margin
y -= margin
w += margin * 2
h += margin * 2
cv2.rectangle(src, (x, y, w, h), (255, 0, 255), thickness=2)
crop = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))
crop = gray[y:y + h, x:x + w].copy()
crop2 = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))
crop2 = src[y:y + h, x:x + w].copy()
crop = cv2.resize(crop, (28, 28), interpolation=cv2.INTER_AREA)
crop2 = cv2.resize(crop2, (28, 28), interpolation=cv2.INTER_AREA)
input_x = np.expand_dims(crop, axis=0)
output_y = model.predict(input_x)
ans = output_y.argmax()
conf = output_y[0, ans]
show_str = str(ans)
print(show_str)
result.append(show_str)
cv2.putText(src, show_str, (x, y), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)
# cv2.imwrite(f'{self.result_dir}/{i - 1}result_{show_str}.png', crop)
cv2.imwrite(f'{self.result_dir}/{i - 1}result_{show_str}.png', crop2)
except Exception as e:
print(self, f'Error : {str(e)}')
cv2.imwrite(f'{self.result_dir}/{result}.png', src)
# 오류처리
sys.excepthook = pyqtExceptionHandler
# cv2.imshow("crop ing", crop)
# cv2.imshow("gray img", gray)
cv2.imshow("original img", src)
# cv2.imshow("binary img", binImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ----------------------------↑↑↑함수들↑↑↑-----------------------------------
if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
Python 을통해 손글씨 이미지에서 숫자를 검출하는 하는 과정을 PyQt 를 통해 GUI로 제작
1. 이미지가 들어있는 폴더를 선택하면 오른쪽의 탐색창에 파일들이 표시되며, 탐색창에서 검출 할 이미지를 선택
2. 숫자검출 버튼을 누르면 검출 시작, 오른쪽 탐색창의 결과텝에서 파일들을 확인 할 수 있음.
3. 검출이 잘 되지 않을 떄에는 오른쪽 아래의 margin과 area를 조절해서 검출 결과를 더 좋게 수정 할 수 있음.
'정보 > Python' 카테고리의 다른 글
Python PyQt (4) | 2024.09.27 |
---|---|
Python 손글씨 검출 (6) | 2024.09.27 |
python YOLOv5 사용방법 (2) | 2024.09.27 |
python 기초2 (0) | 2023.01.10 |
python 기초1 (0) | 2023.01.09 |
Python PyQt
안녕하세요! 😊 오늘은 Python을 활용해서 PyQt를 사용하는 방법에 대해 알아보려고 해요. PyQt는 Python에서 GUI(그래픽 사용자 인터페이스) 애플리케이션을 만들 수 있게 도와주는 강력한 프레임워크예요. 그럼 시작해볼까요?
PyQt란 무엇인가?
PyQt는 Qt 프레임워크를 기반으로 한 Python 바인딩으로, 다양한 플랫폼에서 GUI 애플리케이션을 개발할 수 있도록 해줘요. Qt는 C++로 작성된 라이브러리로, 다양한 기능을 제공하며, PyQt는 이를 Python에서 사용할 수 있게 해주는 역할을 해요. PyQt를 사용하면 복잡한 GUI를 쉽게 만들 수 있어요.
PyQt 설치하기
PyQt를 사용하기 위해서는 먼저 설치가 필요해요. PyQt5를 설치하는 방법은 다음과 같아요:
파이썬 설치 : 먼저 Python이 설치되어 있어야 해요. Python 공식 웹사이트에서 다운로드할 수 있어요.
PyQt5 설치 : 터미널이나 명령 프롬프트를 열고 다음 명령어를 입력해 주세요.
bash
pip install PyQt5
설치 확인 : 설치가 완료되면, Python 인터프리터를 열고 다음 코드를 입력해 보세요.
python
import PyQt5
print(PyQt5.version)
버전 정보가 출력되면 성공적으로 설치된 거예요!
기본 GUI 애플리케이션 만들기
이제 간단한 GUI 애플리케이션을 만들어 볼게요. 아래 코드를 참고해 주세요.
python
import sys
from PyQt5.QtWidgets import QApplication, QLabel
app = QApplication(sys.argv)
label = QLabel('안녕하세요, PyQt5!')
label.show()
sys.exit(app.exec_())
이 코드를 실행하면 "안녕하세요, PyQt5!"라는 텍스트가 있는 창이 나타나요. 정말 간단하죠? 😄
PyQt의 주요 위젯 소개
PyQt에서는 다양한 위젯을 제공해요. 몇 가지 주요 위젯을 소개할게요:
QPushButton : 버튼을 만들 수 있어요.
QLineEdit : 텍스트 입력 필드를 만들 수 있어요.
QLabel : 텍스트나 이미지를 표시할 수 있어요.
QComboBox : 드롭다운 목록을 만들 수 있어요.
QCheckBox : 체크박스를 만들 수 있어요.
이 외에도 많은 위젯이 있으니, 필요에 따라 적절한 위젯을 선택해 사용하면 돼요.
이벤트 처리 및 시그널/슬롯
PyQt의 가장 큰 장점 중 하나는 이벤트 처리 시스템이에요. 사용자가 버튼을 클릭하거나 텍스트를 입력할 때 발생하는 이벤트를 처리할 수 있어요. 이를 위해 시그널과 슬롯 개념을 사용해요.
예를 들어, 버튼 클릭 시 메시지를 출력하는 코드는 다음과 같아요.
python
from PyQt5.QtWidgets import QPushButton
def on_button_clicked():
print("버튼이 클릭되었습니다!")
button = QPushButton('클릭하세요')
button.clicked.connect(on_button_clicked)
이렇게 버튼이 클릭되면 on_button_clicked 함수가 호출돼요.
디자인과 레이아웃
PyQt에서는 다양한 레이아웃을 제공해요. 레이아웃을 사용하면 위젯을 정렬하고 배치하는 데 유용해요. 주요 레이아웃으로는 QVBoxLayout, QHBoxLayout, QGridLayout 등이 있어요.
예를 들어, 수직 레이아웃을 사용하는 코드는 다음과 같아요.
python
from PyQt5.QtWidgets import QVBoxLayout, QWidget
layout = QVBoxLayout()
layout.addWidget(button)
layout.addWidget(label)
window = QWidget()
window.setLayout(layout)
window.show()
이렇게 하면 버튼과 레이블이 수직으로 정렬돼요.
실전 예제: 간단한 계산기 만들기
이제 간단한 계산기를 만들어 볼게요. 아래 코드를 참고해 주세요.
python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit
class Calculator(QWidget):
def init(self):
super().init()
self.setWindowTitle('간단한 계산기')
self.setGeometry(100, 100, 300, 200)
self.layout = QVBoxLayout()
self.result = QLineEdit()
self.layout.addWidget(self.result)
self.button = QPushButton('계산하기')
self.button.clicked.connect(self.calculate)
self.layout.addWidget(self.button)
self.setLayout(self.layout)
def calculate(self):
# 간단한 계산 로직
self.result.setText('계산 결과')
app = QApplication([])
calc = Calculator()
calc.show()
app.exec_()
이 코드를 실행하면 간단한 계산기 GUI가 나타나요. 버튼을 클릭하면 "계산 결과"라는 텍스트가 표시돼요. 실제 계산 로직은 추가로 구현하면 돼요.
'정보 > Python' 카테고리의 다른 글
Python 손글씨 검출 GUI (0) | 2024.09.27 |
---|---|
Python 손글씨 검출 (6) | 2024.09.27 |
python YOLOv5 사용방법 (2) | 2024.09.27 |
python 기초2 (0) | 2023.01.10 |
python 기초1 (0) | 2023.01.09 |
Python 손글씨 검출
안녕하세요! 오늘은 Python을 활용해서 손글씨를 검출하는 방법에 대해 알아보려고 해요. 손글씨 인식은 요즘 인공지능 기술이 발전하면서 많은 관심을 받고 있는 분야 중 하나인데요, 특히 TensorFlow와 NumPy를 사용하면 손글씨 이미지를 쉽게 처리할 수 있어요. 그럼 시작해볼까요?
1. 손글씨 검출이란?
손글씨 검출은 사람이 쓴 글씨를 컴퓨터가 인식하는 기술이에요. 이 기술은 주로 이미지 처리와 머신러닝을 기반으로 하며, 다양한 분야에서 활용되고 있어요. 예를 들어, 우편물 분류, 자동 채점 시스템, 그리고 개인화된 학습 도구 등에서 사용되죠.
2. 필요한 라이브러리 설치하기
손글씨 검출을 위해서는 몇 가지 라이브러리를 설치해야 해요. 가장 먼저 TensorFlow와 NumPy를 설치해볼게요. 아래의 명령어를 터미널에 입력해 주세요.
bash
pip install tensorflow numpy
이 외에도 OpenCV를 사용하면 이미지 전처리에 유용하니, 필요하다면 설치해 주세요.
bash
pip install opencv-python
3. 데이터셋 준비하기
손글씨 인식을 위해서는 데이터셋이 필요해요. MNIST 데이터셋은 손글씨 숫자 이미지로 구성되어 있어, 손글씨 인식 모델을 학습하는 데 많이 사용돼요. TensorFlow에서는 이 데이터셋을 쉽게 불러올 수 있어요.
python
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
이렇게 하면 학습용 데이터와 테스트용 데이터가 준비돼요. 데이터는 28x28 픽셀의 흑백 이미지로 구성되어 있어요.
4. 모델 구축하기
이제 모델을 구축해볼게요. 간단한 신경망 모델을 만들어 보겠습니다.
python
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
여기서 Flatten 레이어는 2D 이미지를 1D 배열로 변환해주고, Dense 레이어는 완전 연결층을 의미해요. 마지막 레이어는 10개의 클래스를 분류하기 위해 softmax 활성화 함수를 사용해요.
5. 모델 학습하기
모델을 컴파일하고 학습을 시작해볼게요.
python
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
여기서 optimizer는 Adam을 사용하고, 손실 함수는 sparse categorical crossentropy를 사용해요. epochs는 학습할 횟수를 의미해요.
6. 손글씨 이미지 검출하기
모델이 학습이 끝났다면, 이제 손글씨 이미지를 검출해볼 차례예요. 테스트 데이터셋을 사용해 모델의 성능을 확인해보겠습니다.
python
test_loss, test_acc = model.evaluate(x_test, y_test)
print('\n테스트 정확도:', test_acc)
이렇게 하면 모델의 정확도를 확인할 수 있어요. 만약 직접 손글씨 이미지를 검출하고 싶다면, OpenCV를 사용해 이미지를 불러오고 전처리한 후 모델에 입력하면 돼요.
7. 결과 확인하기
모델의 예측 결과를 확인해보는 것도 중요해요. 아래의 코드를 사용해 예측 결과를 시각화해볼 수 있어요.
python
import matplotlib.pyplot as plt
predictions = model.predict(x_test)
for i in range(5):
plt.imshow(x_test[i], cmap='gray')
plt.title(f'예측: ')
plt.show()
이렇게 하면 예측한 숫자와 실제 숫자를 비교할 수 있어요. 시각적으로 확인하는 것이 많은 도움이 될 거예요.
8. 마무리 및 추가 자료
오늘은 Python과 TensorFlow를 사용하여 손글씨를 검출하는 방법에 대해 알아보았어요. 손글씨 인식은 다양한 분야에서 활용될 수 있는 유용한 기술이니, 여러분도 한번 도전해보세요! 추가적으로 더 깊이 있는 학습을 원하신다면, TensorFlow 공식 문서나 관련 블로그를 참고하시면 좋을 것 같아요.
이상으로 손글씨 검출에 대한 포스팅을 마치겠습니다. 궁금한 점이 있다면 댓글로 남겨주세요!
'정보 > Python' 카테고리의 다른 글
Python 손글씨 검출 GUI (0) | 2024.09.27 |
---|---|
Python PyQt (4) | 2024.09.27 |
python YOLOv5 사용방법 (2) | 2024.09.27 |
python 기초2 (0) | 2023.01.10 |
python 기초1 (0) | 2023.01.09 |
python YOLOv5 사용방법
안녕하세요!
오늘은 Python YOLOv5 사용방법에 대해 알아보려고 해요. YOLOv5는 객체 탐지 분야에서 매우 유용한 도구로, 많은 사람들이 사용하고 있답니다. 그럼, 함께 YOLOv5를 설치하고 사용하는 방법을 자세히 살펴볼까요?
YOLOv5란?
YOLOv5는 "You Only Look Once"의 약자로, 이미지나 비디오에서 객체를 탐지하는 데에 사용하는 모델이에요. 이 모델은 빠르고 정확하게 여러 객체를 동시에 탐지할 수 있는 특징이 있으며, 다양한 환경에서 쉽게 사용할 수 있답니다.
필요한 환경 설정
먼저, YOLOv5를 사용하기 위해 필요한 환경을 설정할 거예요. Python이 설치되어 있어야 하고, 몇 가지 패키지도 설치해야 해요. 일반적으로는 다음과 같은 패키지들이 필요해요:
torch (PyTorch)
opencv-python
matplotlib
이 패키지들은 pip를 통해 간단하게 설치할 수 있어요:
bash
pip install torch torchvision torchaudio
pip install opencv-python matplotlib
YOLOv5 설치하기
이제 본격적으로 YOLOv5를 설치해볼게요. YOLOv5는 GitHub에서 쉽게 클론할 수 있어요. 터미널에서 다음 명령어를 입력하면 YOLOv5 폴더가 생성되고 필요한 파일들이 다운로드됩니다.
bash
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt
이렇게 하면 YOLOv5가 설치되고 사용할 준비가 완료돼요!
데이터셋 준비하기
YOLOv5를 사용하기 위해서는 객체 탐지에 사용할 데이터셋이 필요해요. 일반적으로는 이미지와 해당 이미지에 대한 라벨 파일이 있어야 해요. 예를 들어, 고양이와 개를 탐지하고 싶다면 각각의 이미지를 준비하고, 해당 이미지에 대한 라벨링도 해주어야 해요.
라벨링 방법
라벨링은 객체 탐지에서 매우 중요한 과정이에요. YOLOv5에서는 LabelImg라는 툴을 사용하여 쉽게 라벨링할 수 있어요. LabelImg를 설치하고 실행한 후, 이미지를 불러온 뒤, 객체를 선택하고 라벨을 입력하면 끝이에요!
라벨링한 파일들은 YOLOv5의 format에 맞게 저장되어야 해요. 각 이미지와 같은 이름을 가진 .txt 파일이 생성되며, 해당 파일에는 객체의 클래스와 위치 정보가 담겨 있어야 해요.
모델 학습하기
이제 YOLOv5 모델을 학습시킬 차례예요. 학습을 위해서는 train.py 스크립트를 사용하면 돼요. 기본적인 학습 명령어는 다음과 같아요:
bash
python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt
각 파라미터는 다음과 같은 의미가 있어요:
--img: 입력 이미지 크기
--batch: 배치 크기
--epochs: 학습할 에포크 수
--data: 데이터셋 정보가 담긴 YAML 파일
--weights: 사용할 초기 가중치 파일
이제 학습을 시작하면 YOLOv5가 데이터를 학습하기 시작해요.
모델 테스트하기
모델 학습이 완료되면, 이제 학습된 모델로 테스트를 해볼 거예요. detect.py 스크립트를 사용하여 이미지를 입력으로 주면, YOLOv5가 객체를 탐지해줄 거예요.
bash
python detect.py --source test.jpg --weights runs/train/exp/weights/best.pt --img 640
여기서 --source는 탐지할 이미지 파일을 의미해요. 이렇게 하면 탐지 결과가 저장된 폴더가 생성돼요.
결과 시각화
탐지 결과를 시각화하는 것은 매우 중요해요. YOLOv5는 탐지된 객체의 위치를 이미지에 표시해주며, 결과를 시각적으로 확인할 수 있어요. 결과 이미지에는 각 객체의 클래스와 신뢰도도 함께 나타나기 때문에, 얼마나 정확하게 탐지했는지를 쉽게 판단할 수 있답니다.
자주 묻는 질문
마지막으로, YOLOv5 사용 중에 자주 발생하는 문제와 그 해결 방법에 대해서도 알아볼게요:
모델 학습이 잘 되지 않는 경우 : 데이터셋이 불균형할 경우, 클래스의 개수를 조정하거나 더 많은 데이터를 추가하면 좋아요.
탐지 결과가 좋지 않은 경우 : 이미지 해상도나 모델 파라미터를 조정해보세요.
이상으로 YOLOv5의 사용 방법에 대해 알아보았어요. YOLOv5를 활용하여 다양한 프로젝트를 진행해보세요!
'정보 > Python' 카테고리의 다른 글
Python 손글씨 검출 GUI (0) | 2024.09.27 |
---|---|
Python PyQt (4) | 2024.09.27 |
Python 손글씨 검출 (6) | 2024.09.27 |
python 기초2 (0) | 2023.01.10 |
python 기초1 (0) | 2023.01.09 |
빠다롤
첫찌가 연휴동안 환경이 바뀌어서 그런지
비염이 심해져서 이비인후과에 다녀와야했다ㅠㅠ
재채기하고 코훌쩍거리고 눈 빨개진거보니 맴찢
근데 우리는 쫌 이비인후과가는게 즐겁다 ㅋㅋㅋㅋ
병원이 즐거운건 아닌데 병원끝나고 항상 가는 빵집이 있는데
빵사러 가는게 너무너무너무너무너무 즐겁다 ㅋㅋ
빵순이 엄마 아들이라 그런지 빵 진짜 좋아한다 내 사랑스로미 >,<
간판만봐도 신난다 발걸음걸음마다 즐거움이 묻어난다 ㅋㅋㅋㅋ
워메 ㅠㅠ 늦게갔더니 빵이 많이없어서 좀...........................속상했지만
쟁반속에 가득...아주많이가득 담았따
분명 4개만 사자고 약속했지만 결국 다 담아버렸지 머야..
나란여자 정말
신랑한테 인증샷보내기 한봉지만 산척ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ아들도 한봉지 더 끌어안고 있었듬 ㅋㅋㅋㅋ
예쁜맘 진이는 할머니도 빵좋아한다고 할머니꺼까지 겟겟겟
이 빵냄새를 맡고 참을수 없다면서 주차장까지 가는길에 빵하나 순삭
그 옆에서 나도 순삭................왜케맛있냐며ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 둘다 빵에 정신팔려서 싱글벙글
짧지만 즐거운 아들과의 데이트 ♥ ♥ ♥ ♥ ♥ ♥
내가 주는 사랑보다 나한테 백배천배 더 많이 사랑주는 내첫아가 진이
항상 고마워 엄마랑 잘 놀아줘서 엄마 사랑해줘서 고마워
니가 내 아들이라서 나는 너무 행복하댠다ㅏ ㅏㅏㅏㅏㅏㅏㅏㅏㅏ 사랑하다 내똥강아지
클랩피자
연휴라 문을 닫아서ㅠㅠ 급검색해서 찾아가게된 클랩피자
원래 가려고했던곳은 도착해보니 문닫혀서 속상했지만 어쩔수 없었
애들이 피자먹자고 해서 급 검색한곳!
광고가 많이떠서 어저찌하다가
저녁시간이라 애들이 배고프다고 해서 그냥 고고
도착하니 신난 우리집 여시방구 꼬맹이
여보도 오! 냄새부터 맛있을꺼같다 이러고 ㅋㅋㅋㅋㅋ 아들은 신나서 벌써 들어가버림
주차장이 엄청 협소해서 조금 불편함ㅠㅠ
피자랑 햄버거랑 같이 있는지 모르고 나는 열심히 피자만 검색해서.........피자만 주문했당
옆 테이블에서 햄버거 먹는거보니까 먹고싶었지만 일단 피자먹어보고 먹는걸로 ㅋㅋㅋ
내가 좋아하는 깔끔깔끔 인테리어
들어가면서부터 피자 꼬소한 향이랑 디자인까지 우리가족 맘을 사로잡았다
우리가 주문한 피자는 반반피자 페퍼로니랑 뉴욕 스테이크하우스 사이즈는 라지
사이드는 콘 샐러드 버팔로 윙 8p
우리식구는 좀 심각한 대식가라서 읭? 피자가 좀 작네 많이작네 이런느낌ㅜㅜㅜ
맛은 있는데 사이즈도 좀 작고 가격도 사악해서 좀................... 다음번엔 고민해봐야할꺼같아요
집에와서 또.........................머먹은건 안비밀
코스트코 장보기!
오늘은 동생이랑 코스트코 장보러갔어요!
우리집은 4인가족인데 넷다 먹보들이라서 코스트코에 자주가요!
오늘은 사실 장본다기보다는 떡볶이 먹어보고 싶어서 따라간거에요 ㅎㅎ
코스트코 도착착!
카트밀고 신나고 가벼운 발걸음으로 ~
내가 젤좋아하는 간식 육포 뙁!
개별포장이고 손에도 안묻고 너무 간편한데 너무 맛있고 그냥 너무 좋아요
이거 진짜 여는순간 멈출수없는 손과 입 ㅠㅠ
눈에 보이면 자꾸 먹어서 오늘은 5봉만 구매했어요
장보기 끝!
돠돠똬똬똬똬ㅗ따ㅗ뙁!~ 떡볶이 사러
츄러스도 하나샀어요ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 국물에 찍어먹을라구요
때깔보소! 떡도 내가 좋아하는 가는 떡
자리가 없어서 기다렸다가 먹었어요ㅠㅠ
군침
떡쫄깃 오뎅도 생각보다 많고 계란까지 완벽! 가격도 3500원 너무 좋네용
계란 국물에 으깨서 먹으니까 너무 맛있어요 꼭 사먹으세요!