반응형

 

서버 코드

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('192.168.109.226', 9008))    # ip주소, 포트번호 지정
server_socket.listen(0)                          # 클라이언트의 연결요청을 기다리는 상태

client_socket, addr = server_socket.accept()     # 연결 요청을 수락함. 그러면 아이피주소, 포트등 데이터를 return

data = client_socket.recv(65535)                 # 클라이언트로 부터 데이터를 받음. 출력되는 버퍼 사이즈. (만약 2할 경우, 2개의 데이터만 전송됨)

print("받은 데이터:", data.decode())             # 받은 데이터를 해석함.

 

반응형

클라이언트 코드

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect(('192.168.109.226', 9008))     # 접속할 서버의 ip주소와 포트번호를 입력.
sock.send('Hello'.encode())                 # 내가 전송할 데이터를 보냄.

내부망(공유기)으로 2대의 컴퓨터나 가상머신으로 테스트해보면 된다.

본인 ip주소는 ipconfig로 찾고, 포트는 안쓰는 포트 아무거나 적어서 테스트 해본다.

 

이를 응용하면, 아래와 같이 체팅서버를 만들 수 있다.

ansan-survivor.tistory.com/319

 

파이썬 체팅 서버 만들기, 체팅 서버 및 클라이언트

cmd에서 파이썬을 구동시켜주기 위해서는 먼저 파이썬3를 설치해야 한다. 테스트 했던 버전은 python 3.8.2 이다. 아래 링크로 다운로드 할 수 있다. (windows OS) www.python.org/downloads/release/python-382/..

ansan-survivor.tistory.com

 

반응형
반응형

사용전 라이브러리 opencv와 numpy가 필요하다.

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

ansan-survivor.tistory.com/308

 

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

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

ansan-survivor.tistory.com

 

왜곡된 이미지에서 4개의 포인트를 지정하고 쭉 펼치는 테스트 함수다.

아래 좌표점은 테스트를 위해 미리 찾아서 넣은것이다.

'''

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

'''

# 왜곡된 이미지를 쭉 펼치는 테스트

import cv2
import numpy as np

img = cv2.imread('hough.jpg')
rows, cols, ch = img.shape

a = [[65,15],[481,13],[28,439],[508,445]]
b = [[0, 0],[1000, 0],[0,500],[1000,500]]   # 왼쪽위점, 오른쪽위점, 왼쪽아래점, 오른쪽아래점

pts1 = np.float32(a)
pts2 = np.float32(b)

img = cv2.circle(img, (a[0][0], a[0][1]), 3, (0,0,255),-1)
img = cv2.circle(img, (a[1][0], a[1][1]), 3, (0,0,255),-1)
img = cv2.circle(img, (a[2][0], a[2][1]), 3, (0,0,255),-1)
img = cv2.circle(img, (a[3][0], a[3][1]), 3, (0,0,255),-1)
#cv2.circle(img, c, 5, (55, 255, 55), -1)

M = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, M, (1000, 500))  # 변환후 크기 (x좌표, y좌표)

cv2.imshow('imgage',img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
반응형

테스트 이미지(hough.jpg)

(결과) 왼쪽 원본이미지에서 찍은 4개 좌표, 오른쪽 쭉 펼치기

 

 

 

반응형
반응형

 

미분하는 함수 라이브러리를 사용하기 위해서는 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

 

 

반응형
1···141142143144145146147···181

+ Recent posts