반응형

 

미분하는 함수 라이브러리를 사용하기 위해서는 sympy 가 필요하다.

cmd로 다운로드 한다.

pip install sympy

sympy 설치 완료

코드

import math
from sympy import symbols, Limit    # pip install sympy

x, a, h = symbols('x, a, h')

fx = 3 * (x**2) - 4 * x + 1     # 함수 f(x) 정의
fxa = fx.subs({x: a})           # f(x)에 x = a 대입
fxh = fx.subs({x: a + h})       # f(x)에 x = a + h 대입

result = Limit( (fxh - fxa)/h, h, 0 ).doit()     # 극한값(미분계수) 계산

print(fx)
print(fxa)
print(fxh)

print("미분 Result:", result)

 

미분이 잘 되었는가 결과 확인을 위해 미분을 자동으로 해주는 사이트를 이용했다.

www.derivative-calculator.net/

 

Derivative Calculator • With Steps!

Above, enter the function to derive. Differentiation variable and more can be changed in "Options". Click "Go!" to start the derivative calculation. The result will be shown further below. How the Derivative Calculator Works For those with a technical back

www.derivative-calculator.net

아래 함수를 미분하면, 아래와 같은 결과가 나온다.

 

 

(결과) 잘 미분 되었다.

 

반응형
반응형

아래와 같은 이미지에 선분을 파악하고, 그 선분의 중심에 수직선을 긋는 코드

파일명 drawing_normalLine.png 으로 사용

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

'''

# 직선을 탐지하여 수직선을 그려줌.

import cv2
import numpy as np

img = cv2.imread('drawing_normalLine.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hier = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

for contour in contours:

    # then apply fitline() function
    [vx, vy, x, y] = cv2.fitLine(contour, cv2.DIST_L2, 0, 0.01, 0.01)
    nx, ny = 1, -vx / vy
    mag = np.sqrt((1 + ny ** 2))
    vx, vy = nx / mag, ny / mag

    # Now find two extreme points on the line to draw line
    lefty = int((-x*vy/vx) + y)
    righty = int(((gray.shape[1]-x)*vy/vx)+y)

    #Finally draw the line
    cv2.line(img,(gray.shape[1]-1,righty),(0,lefty),255,2)
    cv2.imshow('img',img)
    cv2.waitKey(0)

cv2.destroyAllWindows()

 

반응형

 

(결과) 하나의 직선만 그었지만, for문을 잘 활용해서 돌리면 모두 가능하다

 

반응형
반응형

파이썬을 이용해서 글자를 인식하는 프로그램이다.

아래 블로거님을 참고해서 제작 했다. 

 

(참고 링크)

junyoung-jamong.github.io/computer/vision,/ocr/2019/01/30/Python%EC%97%90%EC%84%9C-Tesseract%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-OCR-%EC%88%98%ED%96%89%ED%95%98%EA%B8%B0.html

 

Python에서 Tesseract 사용하기 for OCR

Tesseract 이미지로부터 텍스트를 인식하고, 추출하는 소프트웨어를 일반적으로 OCR이라고 한다. Tesseract는 1984~1994년에 HP 연구소에서 개발된 오픈 소스 OCR 엔진이며, 현재까지도 LSTM과 같은 딥러닝

junyoung-jamong.github.io

 

글자 인식을 위해서는 별도의 tesseract 프로그램이 필요하다. 설치방법은 위에 블로그를 참고 바란다.

아래 아이콘같은 파일이 다운로드 된다. 

 

1. tesseract 설치하기

기본적으로 영어만 인식하게 되어있으며, 다른언어를 인식하게 끔 하려면 옵션선택을 해야 한다.

한국어 인식을 위해 korean 선택

2. tesseract 환경변수 등록하기

    2-1. 단축키 Window + S 키를 누르고 환경 이라고 쓴다.

    2-2. 환경변수 - path를 편집

    2-3. 프로그램 다운로드 위치인 C:\Program Files\Tesseract-ORC 를 등록한다. (필자는 62비트)

          32비트인 사람들은 C:\Program Files (x86)\Tesseract-ORC 에 있을 것이다.

환경변수를 등록하고 저장

    2-4. cmd로 tesseract 라고 치면 아래와 같이 나와야 설치 및 설정이 된것이다.

반응형

3. 필요한 라이브러리 패키지 설치

 

해당 코드를 사용하기 위해서는 아래 라이브러리가 필요하다.

필자는 opencv만 있으므로 나머지 2개를 추가로 설치했다.

 

- 패키지 설치
pip install pillow
pip install pytesseract
pip install opencv-python

pip install pillow
pip install pytesseract
pip install opencv-python

pillow 설치
pytesseract 설치

파이썬 코드

'''
    reference link : https://junyoung-jamong.github.io/computer/vision,/ocr/2019/01/30/Python%EC%97%90%EC%84%9C-Tesseract%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-OCR-%EC%88%98%ED%96%89%ED%95%98%EA%B8%B0.html
    Have to download OCR program firstly.
    Link : https://github.com/UB-Mannheim/tesseract/wiki
    environment    : Window 10, python 3.6
    tesseract ver  : v5.0.0.20190526.exe

    - 이미지 글자 추출 테스트
    cmd > tesseract path\name.png stdout

    - 패키지 설치
    pip install pillow
    pip install pytesseract
    pip install opencv-python
'''

import cv2
import os
try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract

# 설치한 tesseract 프로그램 경로 (64비트)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
# 32비트인 경우 => r'C:\Program Files (x86)\Tesseract-OCR\tesseract'

# 이미지 불러오기, Gray 프로세싱
image = cv2.imread("digit.png")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# write the grayscale image to disk as a temporary file so we can
# 글자 프로세싱을 위해 Gray 이미지 임시파일 형태로 저장.
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename, gray)

# Simple image to string
text = pytesseract.image_to_string(Image.open(filename), lang=None)
os.remove(filename)

print(text)

cv2.imshow("Image", image)
cv2.waitKey(0)

위 코드는 이미지파일에서 글자(숫자, 영어)를 추출해서 text로 출력한다.

 

(테스트 1 - 숫자 출력 ) digit.png 파일

원본 이미지
출력 결과, 숫자가 잘 출력 되었다.

(테스트 2 - 영어와 숫자 출력 ) eng_digit.png 파일

원본 이미지
약간 이상한 특수문자가 끼어있지만, 대체로 출력 되었다.

(테스트 3 - 긴 영어문장 출력 ) sentences.png 파일

원본 이미지

(테스트 4 - 코드에 한글 옵션을 추가해서 한글도 출력해본다.)

아래 옵션을 'kor' 로 변경
원본이미지
안타깝게도 일부 잘 보이는 글자들만 인식되고 나머지는 생략되었다.

 

글자가 명확할 수록 더 잘 인식이 된다.

여러가지 테스트를 해보길 바란다.

 

 

 

<영상처리 관련 독특한 직업 스마트시티CCTV 관제사 자격증>

https://ansan-survivor.tistory.com/921

 

독특한 자격증, 스마트시티 CCTV 관제사 자격증! (스마트시티 자격증, 4차산업 자격증)

4차산업 혁명과 AI 빅데이터가 발전하고 있는 요즘에는 다양한 독특한 자격증들이 생겼다. 이중 아주 특이한 CCTV관제사 자격증이란 것이 있다. 큰 장점은 다양한 업종에서 종사할 수 있다. 요즘

ansan-survivor.tistory.com

 

반응형
반응형

원(circle)만을 인식시켜주는 프로그래밍이다.

사용하기전 필요 라이브러리는 cv2와 numpy이다.

라이브버리 설치 방법은 아래 참조

ansan-survivor.tistory.com/308

 

[Python OpenCV] 파이썬 바코드(barcode), QR코드 인식 프로그램 코드

먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다. 윈도우의 cmd 창을 이용해서 다운받아본다. 총 3개의 라이브러리가 필요하다. 1. openCV

ansan-survivor.tistory.com

동일한 디렉터리에 circle2.jpg 라는 원형을 갖고있는 이미지에서 원만 추출한다.

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

'''

import cv2
import numpy as np

def houghCircle():
    # 원이 있는 이미지를 올림.
    img1 = cv2.imread('circle2.jpg')
    img2 = img1.copy()

    # 0~9까지 가우시안 필터로 흐리게 만들어 조절함.
    img2 = cv2.GaussianBlur(img2, (9, 9), 0)
    # 그레이 이미지로 바꿔서 실행해야함.
    imgray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

    # 원본과 비율 / 찾은 원들간의 최소 중심거리 / param1, param2를 조절해 원을 찾음
    circles = cv2.HoughCircles(imgray, cv2.HOUGH_GRADIENT, 1, 10, param1=60, param2=50, minRadius=0, maxRadius=0)

    if circles is not None:
        circles = np.uint16(np.around(circles))

        print(circles)

        for i in circles[0, :]:
            cv2.circle(img1, (i[0], i[1]), i[2], (255, 255, 0), 2)

        cv2.imshow('ori',img2)
        cv2.imshow('HoughCircle', img1)


        cv2.waitKey(0)
        cv2.destroyAllWindows()
    else:
        print('원을 찾을 수 없음')

houghCircle()

(테스트)

원본 이미지 circle2.jpg

파이썬 코드 돌린 후

원형을 탐지하여 하늘색으로 표시한다.

 

 

반응형
반응형

이전 포스팅과 마찬가지로 cv2 라이브러리와가 필요하다.

라이브러리 설치 방법은 아래 참고.

ansan-survivor.tistory.com/308

 

[Python OpenCV] 파이썬 바코드(barcode), QR코드 인식 프로그램 코드

먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다. 윈도우의 cmd 창을 이용해서 다운받아본다. 총 3개의 라이브러리가 필요하다. 1. openCV

ansan-survivor.tistory.com

 

이 코드는 어떤 이미지가 흐릿할때 색상들을 강조시켜 선명하게 보이게 하는 코드이다.

동일 디렉터리에 name.png 라는 파일이 있다고 가정하면, 이 코드가 시행되고나서 그 파일의 색상들이 강조된다.

import cv2

'''
    함수) 이미지를 더 선명하게 Contrast(대조) 기법을 적용시킴.
        param : 컬러 이미지
        return : 대조된 이미지
'''


def img_Contrast(img):
    # -----Converting image to LAB Color model-----------------------------------
    lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)

    # -----Splitting the LAB image to different channels-------------------------
    l, a, b = cv2.split(lab)

    # -----Applying CLAHE to L-channel-------------------------------------------
    clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8, 8))
    cl = clahe.apply(l)

    # -----Merge the CLAHE enhanced L-channel with the a and b channel-----------
    limg = cv2.merge((cl, a, b))

    # -----Converting image from LAB Color model to RGB model--------------------
    final = cv2.cvtColor(limg, cv2.COLOR_LAB2BGR)

    return final


img = cv2.imread('name.png')
img = img_Contrast(img)

cv2.imshow('a', img)
cv2.waitKey(0)

 

반응형

 

(테스트) 출처 이미지: www.canstockphoto.co.kr/%EB%82%98%EB%AC%B4-%ED%9D%90%EB%A6%BF%ED%95%9C-%EC%95%84%EC%B9%A8-%EA%B0%80%EC%9D%84-%ED%96%87%EB%B9%9B-%EC%86%8C%EB%82%98%EB%AC%B4-%EC%88%B2-64441841.html

파이썬 적용 전 이미지

파이썬 코드 구동

파이썬 적용 후 이미지

반응형
반응형

두개의 이미지 파일을 하나의 이미지로 합치는 파이썬 코드이다.

 

'''
    참고 링크: https://copycoding.tistory.com/159
'''

import cv2
import numpy as np

# 사이즈 조절 W, H
size = (1280, 960)

# 좌우 이미지 불러오기
leftimg = cv2.imread('1.bmp')
rightimg = cv2.imread('2.bmp')

# 사이즈 조정
leftimg = cv2.resize(leftimg, size)
rightimg = cv2.resize(rightimg, size)

# 이미지 좌우 합치기
add_img = np.hstack((leftimg, rightimg))

cv2.imshow('leftimg', leftimg)
cv2.imshow('rightimg', rightimg)
cv2.imshow('add_img', add_img)

cv2.waitKey(0)

참고한 블로그는 아래 링크

https://copycoding.tistory.com/159

 

OpenCV 이미지 붙이기

두개의 이미지를 옆에 또는 아래쪽에 붙이는 기능 입니다. 단순한 기능이라 자세한 설명은 필요가 없을 것 같고 주의 사항으로는 가로로 붙이는 경우 높이가 같아야 하고 세로로 붙이는 경우는

copycoding.tistory.com

 

 

반응형
반응형

 

 

먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다.

윈도우의 cmd 창을 이용해서 다운받아본다.

 

총 3개의 라이브러리가 필요하다.

1. openCV (영상인식 라이브러리)

pip install opencv-python

2. numpy (연산 처리 라이브러리)

pip install numpy

위에 opencv를 받을 때 저절로 같이 설치 되었다.

3. pyzbar (바코드 인식 관련 라이브러리)

pip install pyzbar

 

반응형

 

자 이제 필요한 모든 라이브러리를 받았으니 아래와 같이 코드를 동작시켜본다.

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

'''

# Python Version 3.7.1

import pyzbar.pyzbar as pyzbar  # pip install pyzbar
import numpy as np              # pip install numpy
import cv2                      # pip install opencv-python

# 바코드 탐지하는 엔진 (바코드 및 QR코드 탐지)
def decode(im):
    # Find barcodes and QR codes
    decodedObjects = pyzbar.decode(im)

    # Print results
    for obj in decodedObjects:
        print('Type : ', obj.type)
        print('Data : ', obj.data, '\n')

    return decodedObjects


# Display barcode and QR code location
def display(im, decodedObjects):
    # Loop over all decoded objects
    for decodedObject in decodedObjects:
        points = decodedObject.polygon

        # If the points do not form a quad, find convex hull
        if len(points) > 4:
            hull = cv2.convexHull(np.array([point for point in points], dtype=np.float32))
            hull = list(map(tuple, np.squeeze(hull)))
        else:
            hull = points;

        # Number of points in the convex hull
        n = len(hull)

        # Draw the convext hull
        for j in range(0, n):
            cv2.line(im, hull[j], hull[(j + 1) % n], (255, 0, 0), 3)

    # Display results
    cv2.imshow("Results", im);
    cv2.waitKey(0);

# 파일명 zbar.jpg의 이미지에서 바코드를 탐지하면 해당 코드를 리턴
# Main
if __name__ == '__main__':
    # Read image
    im = cv2.imread('zbar.jpg')

    decodedObjects = decode(im)
    display(im, decodedObjects)

 

이미지 파일 zbar.jpg는 현재 파이썬 파일과 동일 경로에 있어야 한다. (이부분은 절대경로로 수정가능)

zbar.jpg 의 이미지는 아래와 같다. (파일도 업로드)

zbar.jpg
0.37MB

이 이미지파일에 저 파이썬 코드를 돌려본다.

 

*결과

해당 바코드를 탐지해서 숫자를 리턴하고 보여준다.

그리고 어디부분을 인식했는지 파랑색 사각박스로 보여준다.

QR코드도 인식된다. 어떤 타입인지 함께 리턴된다.

반응형
반응형

 

파이참 단축키.pdf
0.21MB

반응형
123456

+ Recent posts