- 이미지 업로드

import cv2

# 이미지 로드
image = cv2.imread('image.jpg')

# 그레이스케일로 변환
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 변환된 이미지 저장
cv2.imwrite('gray_image.jpg', gray_image)

 

- 객체 감지와 추적

import cv2

# 분류기 로드
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# 이미지 로드
image = cv2.imread('image.jpg')

# 그레이스케일로 변환
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 얼굴 감지
faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# 감지된 얼굴에 사각형 그리기
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

# 결과 이미지 보여주기
cv2.imshow('Face Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

- 영상 처리와 비디오 분석

import cv2

# 비디오 캡처 생성
cap = cv2.VideoCapture('video.mp4')

while True:
    # 프레임 읽기
    ret, frame = cap.read()
    
    if not ret:
        break

    # 그레이스케일로 변환
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 변환된 프레임 출력
    cv2.imshow('Video', gray_frame)

    # 'q' 키로 종료
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 리소스 해제
cap.release()
cv2.destroyAllWindows()

 

- 이미지 분할과 객체 추출

import cv2
import numpy as np

# 이미지 로드
image = cv2.imread('image.jpg')

# 이미지를 HSV로 변환
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 추출할 객체의 색상 범위 정의
lower_range = np.array([0, 50, 50])
upper_range = np.array([10, 255, 255])

# 색상 범위에 맞는 이미지 마스크 생성
mask = cv2.inRange(hsv_image, lower_range, upper_range)

# 마스크를 사용하여 원본 이미지에서 객체 추출
extracted_image = cv2.bitwise_and(image, image, mask=mask)

# 결과 이미지 출력
cv2.imshow('Object Extraction', extracted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

- 히스토그램 분석

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 이미지 로드
image = cv2.imread('image.jpg', 0)

# 히스토그램 계산
hist = cv2.calcHist([image], [0], None, [256], [0, 256])

# 히스토그램 그래프 생성
plt.plot(hist, color='black')
plt.xlim([0, 256])
plt.xlabel('Pixel Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

 

- 모폴로지 연산

import cv2
import numpy as np

# 이미지 로드
image = cv2.imread('image.jpg', 0)

# 이진 이미지로 변환
ret, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

# 모폴로지 연산 수행
kernel = np.ones((5, 5), np.uint8)
dilated_image = cv2.dilate(binary_image, kernel, iterations=1)
eroded_image = cv2.erode(binary_image, kernel, iterations=1)

# 결과 이미지 출력
cv2.imshow('Dilated Image', dilated_image)
cv2.imshow('Eroded Image', eroded_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

- 영상 합성

import cv2
import numpy as np

# 첫 번째 영상 로드
image1 = cv2.imread('image1.jpg')

# 두 번째 영상 로드
image2 = cv2.imread('image2.jpg')

# 영상 합성
blended_image = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)

# 결과 이미지 출력
cv2.imshow('Blended Image', blended_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

 

 

 

'PYTHON' 카테고리의 다른 글

1. python _ opencv  (0) 2023.05.18

1. cv2.imread()

import cv2

image = cv2.imread("image.jpg")

This function reads an image from a file and returns it as a NumPy array.

2. cv2.imshow()

import cv2

image = cv2.imread("image.jpg")
cv2.imshow("Image", image)

key = cv2.waitKey(0)

 

This function displays an image on a window.

3. cv2.waitKey()

import cv2

image = cv2.imread("image.jpg")
cv2.imshow("Image", image)

key = cv2.waitKey(0)

This function waits for a key to be pressed and returns the ASCII code of the key.

4. cv2.imwrite()

import cv2

image = cv2.imread("image.jpg")
cv2.imwrite("image_output.jpg", image)

This function writes an image to a file.

5. cv2.resize()

import cv2

image = cv2.imread("image.jpg")
resized_image = cv2.resize(image, (image.shape[1] // 2, image.shape[0] // 2))

This function resizes an image.

6. cv2.flip()

import cv2

image = cv2.imread("image.jpg")
flipped_image = cv2.flip(image, 0)

This function flips an image horizontally.

7. cv2.threshold()

import cv2

image = cv2.imread("image.jpg")
thresholded_image = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY)[1]

This function applies a threshold to an image.

8. cv2.findContours()

import cv2

image = cv2.imread("image.jpg")
contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

This function finds contours in an image.

9. cv2.drawContours()

import cv2

image = cv2.imread("image.jpg")
contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image, contours, -1, (0, 0, 0), 2)

 

This function draws contours on an image.

10. cv2.HoughCircles()

import cv2

image = cv2.imread("image.jpg")
circles = cv2.HoughCircles(image, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=10, maxRadius=100)

 

This function finds circles in an image.

 

'PYTHON' 카테고리의 다른 글

2. python _ opencv  (0) 2023.05.26

U-Net은 딥러닝 분야에서 이미지 분할 작업을 수행하는 데 사용되는 네트워크 아키텍처입니다. 이미지 분할은 입력 이미지를 픽셀 단위로 분할하여 개별 객체 또는 영역을 인식하는 작업입니다. 예를 들어 의료 이미지에서 종양을 감지하거나 자동차 자율주행에서 도로 및 차선을 감지하는 데 사용될 수 있습니다.

U-Net은 Fully Convolutional Network (FCN)의 한 종류로, Convolutional Neural Network (CNN)을 기반으로 하며, 인코더(encoder)와 디코더(decoder)로 구성됩니다. 인코더는 입력 이미지에서 점차 더 작은 크기의 특징 맵을 추출하여 문맥 정보를 포착합니다. 디코더는 인코더에서 추출한 특징 맵을 업샘플링하여 원본 입력 이미지와 동일한 크기의 분할 맵(segmentation map)을 생성합니다. U-Net의 독특한 특징은 인코더와 디코더 사이에 대칭 구조(symmetric skip connections)를 사용하여 더 많은 정보를 보존하는 것입니다. 이러한 대칭 구조는 원래 FCN에 비해 더 나은 결과를 제공합니다.

U-Net은 의료 이미지 분할 및 도로 분할과 같은 다양한 응용 분야에서 효과적으로 사용되고 있으며, 데이터 증강(data augmentation) 및 전이 학습(transfer learning)과 같은 기술과 함께 사용될 때 더 나은 결과를 제공할 수 있습니다
U-Net은 이미지 분할 문제를 해결하기 위해 딥러닝에서 사용되는 Fully Convolutional Network (FCN)의 한 종류입니다. FCN은 전통적인 CNN과 달리 마지막 출력 층(output layer)을 공간 차원만 가지는 특성 맵(feature map)으로 대체하여, 입력 이미지와 같은 크기의 출력 이미지를 생성하는 것을 목표로 합니다.

U-Net은 FCN과 마찬가지로 인코더와 디코더로 구성됩니다. 인코더는 입력 이미지를 받아 특징 맵(feature map)으로 변환합니다. 이 특징 맵은 입력 이미지의 고수준(high-level) 특징을 포착한 것으로, 점점 더 작아지는 인코더 층을 통해 추출됩니다. 이러한 과정은 이미지의 로컬(local) 정보를 전역(global) 정보로 변환하면서, 이미지 분할을 위해 필요한 문맥(context) 정보를 보존합니다.

디코더는 인코더에서 추출한 특징 맵을 업샘플링하고, 각각의 업샘플링된 특징 맵을 이어(concatenate) 원본 입력 이미지와 크기가 같은 분할 맵(segmentation map)을 생성합니다. 이러한 방식으로 U-Net은 입력 이미지의 각 픽셀을 적절한 분할 클래스(class)로 예측할 수 있습니다. U-Net의 디코더는 이러한 예측 과정에서 중요한 역할을 합니다. 대칭 구조를 갖는 U-Net에서는 인코더와 디코더 사이에 스킵 연결(skip connection)이 존재합니다. 이를 통해 인코더에서 추출한 특징 맵이 디코더의 해당 층에 직접 연결되어 정보의 손실 없이 보존됩니다. 이러한 대칭 구조와 스킵 연결은 원래의 FCN보다 더 나은 결과를 보장합니다.

U-Net은 의료 영상 분할, 도로 분할, 얼굴 인식 등 다양한 분야에서 사용되고 있습니다. U-Net은 데이터 증강(data augmentation) 및 전이 학습(transfer learning)과 같은 기술을 함께 사용하면 더욱 높은 정확도를 달성할 수 있습니다.


Python tool은 여러 가지가 있습니다.

그중 Python Idle 설치해보겠습니다.

1. Google에 'Python install' 이나 'Python'을 검색해줍니다.

[그림 1] 이미지 클릭시면 Python 홈페이지로 바로 접속 가능합니다.

 

2. 상단 메뉴 바에서 Downloads에서 사용하는 OS를 선택하시면 됩니다. 

[그림 2] OS에 맡게 들어가기 

 

3. 원하는 버전을 선택하여 클릭합니다.

[그림 3] 이번 포스트에서는 python3.10.2 기준으로 말씀드립니다. (다른 버전들도 크게 다름 없습니다.) 

 

4. Python3.10.2 클릭 후, 가장 아래로 내립니다.

[그림 4] Windows embeddable package(32,64bit)를 선택하시면, zip파일로 받아집니다. Windows installer(32,64bit)를 받으시면 exe파일로 받으실 수 있습니다. zip파일은

보통 4~5년 이내의 컴퓨터는 64bit일 확률이 높습니다.

 4-1 ( 내 컴퓨터 ) 내 PC에서 오른쪽 마우스를 클릭, 속성을 누르시면 '시스템'에서 사용하시는 컴퓨터의 bit를 확인하실 수 있습니다.

[그림 5] 이미지 중앙을 확인하시면, [시스템] 칸 - 시스템 종류 확인

 

5-1. (압축) zip 파일은 압축을 풀면 바로 사용 가능합니다.

[그림 6] Python.exe를 이용가능합니다.

5-2  [ python-3.10.2-amd64.exe ]

          - 바로 Install Now 누르고 착한 버튼만 눌러도 됩니다. 

          - 가장 아래 (Add python 3.10 to path)를 체크 후 Install을 진행하시면,

            python 환경설정을 안 해도 됩니다.

 

 

 

 

 

 

 

 

'PYTHON > PYTHON_기초' 카테고리의 다른 글

Life Is Too Short, You Need Python  (0) 2020.03.29
PYTHON_기초_START  (0) 2020.03.28

 

텐서 플로우 환경설정은 다른 사람 말듣는 법보다는 텐서플로우 홈페이지 들어가서 하는게 더 정확하고 확실하다.

(귀찮으면, 그냥 코랩,,,ㄱㄱ) 들어가기 전, 자신의 GPU에 대해 알고 들어가시길,,,

작업관리자를 들어가 확인하는게 가장 빠름...

그 후 접속

www.tensorflow.org/install/gpu?hl=ko#hardware_requirements

 

GPU 지원  |  TensorFlow

참고: GPU 지원은 CUDA® 지원 카드가 있는 Ubuntu 및 Windows에 제공됩니다. TensorFlow GPU 지원에는 다양한 드라이버와 라이브러리가 필요합니다. 설치를 단순화하고 라이브러리 충돌을 방지하려면 GPU를

www.tensorflow.org

 

차근차근 넘어가면서 확인하시길,,

 

표시된곳 다 눌러서, GPU에 맞게 설치

 

위 방법에 맞게 설치한다면, Tensorflow에서 GPU사용할수있다.

부족한 부분있다면 댓글남겨주세요. 업데이트해드리겠습니다....

 

 

 

비 전공자 개발자에게 파이썬(PYTHON)을 추천하는 이유

 

- 가장 인간다운 언어.

 

- 강력하지만 무료.

 

- 간결하다.

 

- 빠르다.

 

 

 

비 전공자 개발자 파이썬(PYTHON)과 같이 배우기 좋은 언어

 

- 대부분의 타 언어와 잘 어울려 다른 언어와 결합해 조화를 이룬다. -

 

- JAVA

 

- JAVA

 

- JAVA

 

파이썬은 접착_언어라 불릴 정도로 다른 언어와 결합을 잘한다.

비 전공자 개발자가 접근하고 배우고 따라 하기 쉬운 언어는 JAVA 이다.

JAVA는 다른 언어보다 배울수 있는 플랫폼도 많고, 가장 매력적인 언어중 하나다.

지금 보는 웹사이트, 사용하는 어플리케이션또한 대부분 JAVA로 이루어져있다.

그리고 파이썬과 전혀 다른 매력을 갖고 있어, 파이썬과 함께 배우면 두가지 매력을 느낄수 있어 질리는 맛 없이 공부 할 수 있어 병행해서 접하는게 좋다.

 

 

 

 

비전공자 개발자의 첫 걸음을 PYTHON 추천합니다.

가장 쉽게 배울수 있습니다. 

ANACONDA, IDE로 처음을 시작하는것을 추천,

다음 글부터 ANACONDA 설치 밑 기초를 시작 할 것입니다.

 

+ Recent posts