pip install opencv-python
pip install scikit-image
skimage 라이브러리에 내장된 이미지를 호출하고 출력한다.
from skimage import data, io
from matplotlib import pyplot as plt
camera = data.camera() # 카메라 이미지 호출 (grey scale)
io.imshow(camera)
plt.show()
print(type(camera), camera.shape) # 512 x 512 차원
print(camera)
cat = data.chelsea()
io.imshow(cat)
plt.show()
print(type(cat), cat.shape) # 300 x 451 x 3 차원
print(cat)
호출한 해당 url의 이미지에서 특정 범위에 있는 색상의 비율을 탐지한다. 처음으로 빨간색 부분을 흰색으로 표시 , 아닌 부분을 검게 처리한다. 다음으로 주황색 부분을 흰색으로 처리 , 아닌 부분을 검게 처리한다. (반복)
import numpy as np
import cv2 as cv
from skimage import io
from matplotlib import pyplot as plt
# HSV scale 방법
# color RGB 값 임의로 설정
red = np.array([[0, 80, 80], [10, 255, 255]]) # red RGB 값 시작~끝 값 임의로 설정
orange = np.array([[13, 80, 80], [23, 255, 255]])
yellow = np.array([[25, 80, 80], [35, 255, 255]])
green = np.array([[40, 80, 80], [80, 255, 255]])
blue = np.array([[80, 80, 80], [140, 255, 255]])
pink = np.array([[145, 80, 80], [160, 255, 255]])
red_high = np.array([[170, 80, 80], [180, 255, 255]]) # 마지막도 red
color_names = ["red", "orange", "yellow", "green", "blue", "pink"]
colors = [red, orange, yellow, green, blue, pink, red_high]
# 이미지 url
url = "https://lh3.googleusercontent.com/0ov1-rv3uTpw4KQphQUemyHPslZ4a8q-5C3c89lbXUKjbo9RzVaYH4F8_sMJBm4dsR0"
url = "https://lh6.ggpht.com/hIY78puIGVb26VFsWexvVe5T00nfLK9IKbg8uHKK9MwyAO0aPySjopPh1NUSMJYM2UWX"
image = io.imread(url)
image = cv.cvtColor(image, cv.COLOR_RGB2BGR) # 이미지 프로토콜 변환
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
ratios_dic = {} # key = 색 / value = 색상 비율
for i in range(len(colors)):
mask = cv.inRange(hsv, colors[i][0], colors[i][1])
io.imshow(mask)
plt.show()
if i != len(colors) - 1:
ratios_dic[color_names[i]] = np.count_nonzero(mask) / float(np.prod(mask.shape)) * 100
else:
ratios_dic[color_names[0]] = ratios_dic[color_names[0]] + np.count_nonzero(mask) / float(np.prod(mask.shape)) * 100
print(ratios_dic)
green 색상의 비율이 가장 높다!
문서 하나가 기준이다.
1. Tokenization : 단어 수준으로 문서를 쪼갠다.
2. stemming : 단어를 일반형(원형)으로 변환
3. stopwords : 불필요한 단어 제거
4. 동의어 처리
(ex)
텍스트 데이터의 일반적인 분석 단위는 문서 or 단어이다.
가장 일반적으로 사용되는 방식은 term-document-matrix 이다.
<term-document-matrix>
* 하나의 문서를 특정 단어의 등장여부/빈도수로 구성된 벡터로 표현
* 하나의 단어를 발생한 문서로 구성된 벡터로 표현 (위와 반대)
(ex1)
Existence of "광고" : 1 -> 단어 존재 // 0 -> 존재 X
Spam or not : 1 -> 스팸 메일 // 0 -> 스펨 메일 X
(ex2)
(1) '엄마', '아빠', '어머니', '아버지'로 구성된 4차원 벡터로 표현하시오.
-> word vector로 표현하자. 하나의 문서를 특정 단어의 등장여부/빈도수로 구성된 벡터로 표현하자.
(2) 일반적으로 사용될 수 있는 word vector의 차원수는?
-> 작게는 2차원 벡터부터 몇 십만, 백만 단위로 엄청 크다. 따라서 고성능의 하드웨어와 많은 컴퓨팅 자원의 소모가 필요하다.
(3) 문서1, 문서2는 다른 문서인가? and 벡터1, 벡터2는 다른 벡터인가?
-> 유사한 문서이다. 단어의 의미가 서로 유사하기 때문이다.
-> 벡터끼리의 유사도가 0으로 서로 관계가 없다. 구문적인 의미(semantic)를 담고있지 않기 때문이다.
Word Cloud : 단어 뭉치를 가시화하는 방식이다. 빈도수/중요도 등 가중치에 따라
색/크기로 차이를 주어 표현한다.
import pytagcloud
import pygame
tag = [('hello', 100), ('world', 80), ('Python', 120), ('kdb', 70), ('nice', 60), ('Deep Learning', 20), ('DB', 40),
('great', 120), ('MySQL', 110), ('DT', 125), ('SVM', 10), ('Text Data mining', 170), ('kaggle', 45), ('randomForest', 55), ('Regression', 160), ('Loss Function', 195)]
tag_list = pytagcloud.make_tags(tag, maxsize=50) # tag화 시켜줌
pytagcloud.create_tag_image(tag_list, 'word_cloud.jpg', size=(900, 600), rectangular=False)
import webbrowser
webbrowser.open('word_cloud.jpg')
Such an interesting article here.I was searching for something like that for quite a long time and at last I have found it here. https://www.jacketsmasters.com/product/heart-of-stone-parker-jacket/
This is the best post I have ever seen. Very clear and simple. Mid-portion Is quite interesting though. Keep doing this. I will visit your site again. Eddie Munson Vest
Excellent blog! Such clever work and exposure! Keep up the very good work. Black Parade Jacket
With OpenCV, developers can access a comprehensive set of tools for manipulating and analyzing image and video shell shockers data. These tools include features like image filtering, edge detection, feature extraction, image segmentation, and more. OpenCV also provides built-in support for camera calibration, stereo vision, and 3D reconstruction.