공부2021. 10. 19. 09:04

django-deubg-toolbar 사용을 할 때, DRF를 사용하신다면 return값이 response content가 json 이기 때문에 django-debug-toolbar가 제대로 작동 안합니다.

 

이럴 경우 사용하기 위해서 미들웨어를 사용해서 리턴값을 바꿔줘야하는데요 그래야지 html이 랜더링되서 나가게 됩니다.

아래 블로그처럼 진행하면 django-debug-toolbar 를 jsonresponse에서도 사용할 수 잇습니다.

https://khsiea.github.io/2018/04/30/django-debug-toolbar.html

 

django-debug-toolbar 소개 - Heesang Blog

장고 웹 개발에 있어서 유용한 디버그 툴에 대해서 소개를 하려고 합니다. django-debug-toolbar 입니다. django-debug-toolbar 사이트 : https://django-debug-toolbar.readthedocs.io/en/stable/installation.html 설치하기 pip ins

khsiea.github.io

 

그러나 저같은경우는 윗 소스를 적용했을 때 툴바 클릭시 아래와 같은 오류가 있었습니다.

Unexpected token < in JSON at position 1 

오류가 발생하게 됩니다. 또한 받아지는 json 응답의 한글이 깨져서 보이게 됩니다.

 

따라서 미들웨어를 조금 수정해줬습니다.

 

 

from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponse
from config.settings import STAGE, STATICFILES_DIRS
import json


class NonHtmlDebugToolbarMiddleware(MiddlewareMixin):

def process_response(self, request, response):
if STAGE == "development":
print(request.path_info)
if (response["Content-Type"] == "application/json") and ("__debug__" not in request.path_info):
content = json.dumps(json.loads(response.content), sort_keys=True, indent=2, ensure_ascii=False)
response = HttpResponse(u'<html><body><pre>{}</pre></body></html>'.format(content))
return response

 

위의 소스에 있는 클래스를 미들웨어에 추가하면 제대로 django-debug-toolbar가 작동하는 모습을 볼 수 있습니다.

 

django-debug-toolbar에서 __debug__ url 을 사용한다는 점과,

json.loads에 ensure_ascii 옵션을 추가하여 한글이 깨지는것을 방지했습니다.

 

대신 한가지 문제점으로 response 컨텐트 타입이 text/html 로 변하기 때문에 기존 json과 달라진다는 점이 있습니다.

 

 

아래 소스코드를 참고했습니다.

https://gist.github.com/fabiosussetto/c534d84cbbf7ab60b025

 

Enable Django toolbar for JSON responses

Enable Django toolbar for JSON responses. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

Posted by richcherry
공부2020. 1. 1. 20:09

https://github.com/choinamki/opencv_make_cartoon

 

choinamki/opencv_make_cartoon

Contribute to choinamki/opencv_make_cartoon development by creating an account on GitHub.

github.com

c++ opencv 를 사용하여 카툰라이저를 만들었습니다.

 

Posted by richcherry
공부2019. 11. 27. 22:06

https://youngest-programming.tistory.com/92참고했습니다.

 

[openCV] HSV 특정색 검출하기

import numpy as np import cv2 # BGR(파랑색) color = [255, 0, 0] # cvtColor 함수의 입력으로 사용할 수 있도록 한 픽셀로 구성된 이미지로 변환한다. pixel = np.uint8([[color]]) # cvtColor를 사용하여 HSV..

youngest-programming.tistory.com

 

나뭇잎을 골라내어 단풍으로 물들여봤습니다.

RGB에서는 3개의 채널에 색의 정보와 명암의 정보가 같이 들어가 있기 때문에, 색도, 채도, 명도의 3 채널을 가지는 HSV로 변환한 뒤 색도 채널의 초록값을 찾아내어 붉은 색으로 바꿔주면 단풍으로 물들게 할 수 있습니다.

 

HSV는 360도의 색 영역을 가지나 opencv에서 화소의 최대값은 255이기 때문에 반으로 나눠서 사용해야 합니다.

초록색과 붉은색의 차이는 60도 정도 차이가 나기 때문에 그 반인 30도 만큼 값을 빼줘서 단풍을 물들여 봤습니다.

 

 

 

 

코드 입니다.

결과 이미지입니다.

왼쪽 원본, 오른쪽 결과

Posted by richcherry
공부2019. 11. 27. 21:45

https://docs.opencv.org/master/db/d06/tutorial_hitOrMiss.html참고했습니다.

 

OpenCV: Hit-or-Miss

Prev Tutorial: More Morphology Transformations Next Tutorial: Extract horizontal and vertical lines by using morphological operations Goal In this tutorial you will learn how to find a given configuration or pattern in a binary image by using the Hit-or-Mi

docs.opencv.org

Hit-or-Miss 는 2진 이미지에서 지정된 패턴을 찾는 방법입니다.

 

A가 input image B1과 B2가 필터라고 하면

B1필터하고는 hit 하는 것과 B2필터하고는 miss 나는 것을  결합하여 패턴을 추출하게 됩니다.

 

왼쪽에서부터 각각 B1,  B2,  B1 B2의 Combined

0인 부분은 어떻게 되든 상관없는 부분, 1인 부분은 실제 값 255을 가지는 부분, -1은 0을 가지는 부분으로

해당 패턴이 있으면 255의 값을 부여하게 됩니다.

 

위에 이미지는 3 * 3 필터에서 가운데 화소가 비어져있고 상하좌우에 값이 들어가있는 패턴을 검출해서 255의 값을 넣어주게 됩니다.

 

이것을 이용해서 외곽선을 검출해봤습니다.

여러 필터를 이용하여 나온 이미지를 합치는 식으로 외곽선을 검출했습니다.

 

아래는 코드입니다.

결과 이미지입니다.

 

Posted by richcherry
공부2019. 10. 16. 00:59

https://blog.naver.com/ledzefflin/220503000189 참고했습니다.

 

OpenCV 강의 07-03 Histogram Equalization of Grayscale or Color Image(번역본)

Histogram Equalization of Grayscale or Color Image Histogram 히스토그램은 이미지의 강도 분포이...

blog.naver.com

https://myoa-engineering.com/techlog/archives/481 참고했습니다.

 

[OpenCV] Image Histogram Equalization (Color) – 2 - Myoa Engineering Techlog

  [OpenCV] Image Histogram Equalization (B&W) – 1 바로 이전 글에서 쓰다 만 느낌으로 B&W 영상의 Histogram Equalization을 수행하였다. 그렇다면 Color 영상은 어떤 이유로 바로 적용할 수 없는 것인지 생각할 필요가 있다.   Color Channel 더보기…

myoa-engineering.com

https://webnautes.tistory.com/1043 참고했습니다.

 

영상처리 강좌 2 - 히스토그램 평활화( Histogram Equalization )

히스토그램 평활화는 히스토그램을 이용하여 이미지의 명암 대비를 개선시키는 방법입니다. 그레이스케일 영상의 경우 픽셀이 가질 수 있는 값의 범위는 0 ~ 255 사이의 값입니다. 이미지 상에서 픽셀값이 0인 갯..

webnautes.tistory.com

 

opencv 라이브러리를 사용하여 Histogram equlization을 구현했습니다.

히스토그램 평활화는 화소값의 분포를 나타내는 히스토그램을 균일하게 되도록 변환하는 처리입니다.

히스토그램 평활화를 사용하면 이미지의 픽셀값이 골고루 분산되어 이미지의 명암대비가 좋아지게 됩니다.

 

방법은 1. 영상의 누적 히스토그램을 구한 뒤 2. 그 값을 0.0과 1.0 사이로 정규화 하고서 3. 이것을 테이블로 이용하여 화소값을 변환합니다.

 

해당 코드는 흑백 이미지에만 적용되는 코드입니다. 컬러 이미지같은 경우는 R G B 의 히스토그램 분포가 다르기 때문에 각각의 채널에 평활화를 진행하면 원하지 않는 사진이 나오게 됩니다. 따라서 HSV 나 YCbCr 로 이미지 형태를 바꿔서 색의 비율을 건들이지 않고 휘도나 명도 채널에 대해서 히스토그램 평활화를 진행하면 됩니다.

 

픽셀을 히스토그램으로 만드는 과정은 버킷 정렬 알고리즘과 유사합니다.

 

코드 입니다.

결과 사진입니다.

좀 더 이미지의 명암대비가 뚜렷해진것을 알 수 있습니다.

Posted by richcherry
공부2019. 9. 27. 23:05

https://dic1224.blog.me/220841161411 참고했습니다.

 

영상처리(OpenCV) Bilinear interpolation (양선형 보간법) : 과정

영상처리(OpenCV) Bilinear interpolation (양선형보간법) : 과정 [참고] 영상처리 Geometric Transf...

blog.naver.com

https://dic1224.blog.me/220841171866 참고했습니다.

 

영상처리(OpenCV) Bilinear interpolation (양선형보간법) : c++ 구현

영상처리(OpenCV) Bilinear interpolation (양선형보간법) : c++ 구현 [참고] 영상처리 Geometric Tr...

blog.naver.com

 

opencv 에 resize 함수를 Bilinear interpolation 으로 구현했습니다.

1과 2를 누르면 그림의 가로 세로가 1.1 만큼 커지거나 줄어들어서 보여지게 됩니다.

 

기본 원리는 기존 사진과 rate 만큼 크기가 변화한 사진이 있다면, 변화환 사진의 픽셀을 그 길이 만큼 참조하도록 움직입니다. 그리고 움직인 (y,x)를 rate로 나눠서 대응되는 픽셀을 찾고 그 픽셀의 주변 3개의 픽셀을 찾아서 채워야되는 픽셀과의 거리 비율만큼 4개의 픽셀의 값을 곱한 뒤 더해주는 방식입니다.

 

전체 코드입니다.

 

P1에 fx1이 아닌 fx2를 곱해주는 이유는 P1과 P2와 fx1과 fx2의 비율은 같다라는 비례식을 세우고 외항과 내항의 곱은 같다는 특성을 사용하면 알 수 있습니다.

 

 

실행 화면입니다.

Posted by richcherry
공부2019. 3. 22. 17:04

github 주소입니다. https://github.com/choinamki/google_translate_useing_selenium


수집한 데이터가 영어가 아니라서 lda를 사용 할 수 없었습니다.

lda를 사용하기 위해서 구글 번역기(google translate) 홈페이지에 접속해서 문장을 번역하는 코드를 만들었습니다.

각 나라 언어들을 구글 번역기를 이용하여 영어로 번역시켜 줍니다.


Posted by richcherry
공부2019. 1. 15. 19:41

3학년 2학기 인간-컴퓨터 상호작용 기말 과제입니다.


텐서플로우를 사용하여 두개의 레이어를 가진 CNN 을 구성했습니다.


이미지는 32*32 의 1채널을 가진 흑백 사진으로 CIFAR-10 dataset image 이미지를 교수님이 임의로 편집해서 만들었습니다.



Posted by richcherry