//구글광고

 

외부접속이 가능한 유저를 생성한다.


create user 'admin'@'%' identified by 'arduino';

 

유저는 admin , 암호는 arduino로 만들었다. 이는 외부 mysql에서 접속할때 접속자로 사용된다.

 

외부에서 접속해서 사용할 데이터베이스를 생성한다.

create database sensor;

 

생성된 sensor 데이터베이스의 모든 권한을 admin 유저에게 준다. 여기서 admin유저는 외부접속이 가능한 유저이다.
grant all privileges on sensor.* to 'admin'@'%';
flush privileges;
show grants for 'admin'@'%';

이제 운영체제 에서 아래의 내용을 수정한다.
cd /etc
sudo vi my.cnf

bind-address를  127.0.0.1 -> 0.0.0.0 으로 변경

 

 

mysql 서비스를 재시작 하면 이제 외부에서 접속이 가능해진다

접속할때는 SSH모드로 접속하거나(root유저 사용시)

admin유저 사용시는 tcp/ip로 해서 3306으로 접속하면 된다.

(참고문헌 : 백견불여일타 머신러닝 데이터 전처리 입문 - 로드북)

 

데이터 읽어오기

 

  1) CSV 열기   

import pandas as pd

df1 = pd.read_csv('bank.csv', sep=',')
df1.head()

head로 조회 하면 엑셀처럼 깔끔하게 나옴.

 

 

일반적인 파일오픈과 비교해 보면 차이가 좀 있다.

import csv

f=open('bank.csv','r',encoding='cp949')

rdr = csv.reader(f)

for col in rdr :
    print(col)

f.close()     

 

- 데이터의 행수와 열수 확인

print(df1.shape)

 

- 데이터 타입 확인

print(df1.dtypes)

shape (데이터의 행과 열의 수 ), 데이터타입 확인한 결과

- 데이터 결손치 확인

 

 데이터에 null 값이 있는지를 조회하는방법

 

   isnull 을 이용하여  결손치가 있는지 여부(유무) 확인하기 - 결손치가 있으면 True 를 반환 아니면 False를 반환

   axis가 1 이면 행방향으로 결손치유무를 검색함

   axis가 0 이면 열방향으로 결손치유무를 검색함

print(df1.isnull().any(axis=1))

axis =1 로 행방향으로 결손치 유무 검색 결과

print(df1.isnull().any(axis=0))

axis =0 으로 열방향 결손치 유무 검색결과

 

- 결손치의 개수 파악 

  위의 방법으로 하면 데이터가 클수록 찾기가 힘들다 그래서 결손값의 개수를 파악해보기 위해 sum을 사용해서 카운트

print(df1.isnull().sum(axis=1))

행방향(axis=1)의 결손치 합을 계산한다

행방향 결손치 합의 결과

결손치합이 많은 순서대로 정렬하기

print(df1.isnull().sum(axis=1).sort_values(ascending=False))

ascending=False 로 내림차순 정렬

내림차순 정렬된 결과

print(df1.isnull().sum(axis=0))

열방향(axis=0)의 결손치 합을 계산한다.

 

열방향 결손치 합의 결과

 

- 통계량 계산

 

데이터 프래임의 describe() 를 사용하여 통계량을 계산할 수 있다. 기본적으로 수치(int64) 항목에 대한 통계량이 계산되어 나온다

 

count : 건수(데이터건수의 총합)

mean : 평균값 , std : 표준편차

min : 최솟값 , 25% : 제 1사분위값, 50% : 제2사분위값(중앙치), 75%: 제3사분위값, max:  최댓값

 

df1.describe()

 

데이터프레임의 통계치가 나옴(수치항목컬럼만 계산되어 나옴)

df1.describe(include=[object])

오브젝트 타입에 대한 통계치를 보려면 include=[object] 옵션을 넣어주면 볼 수 있다.

 

오브젝트 컬럼의 통계정보

 

 

 

 

 

opencv 에서 웹캠을 열어서 frame을 read 해보면 해상도가 640*480 으로만 나오는 문제가 발생했다.

 

웹캠 스팩에는 full - hd 지원이라 이상하게 여겨서 자료를 찾아보니 다음과 같은 방법으로 해결할 수 있었다.

 

1. frame을 처음 한번 read 한다.

 capture.Read(frame);

 

2. 처음 read 한 프래임에서 해상도값을 구해본다.

 if (!frame.Empty())
                {
                    

                    capture.Read(frame);

                    cameraCount = cameraCount + 1;
                    textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견됨 (" + capture.FrameWidth+ "*" + capture.FrameHeight + ")";
                    
                }
                else
                {
                    textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견실패";
                }

frame이 정상적으로 읽혀졌는지(empty 가 아닌지 ) 판단한 후,

해상도를 구해보자

 

1번 카메라는 720p 이고 2번 카메라는 full-hd 지원이라고 스팩에 적혀있었으나 640*480 해상도만 나오는 문제가 발견된다.

 

3. 프레임을 읽고 난 후, 해상도를 강제로 5000*5000으로 큰값을 지정해준다.

if (!frame.Empty())
                {
                    capture.FrameWidth = 5000;
                    capture.FrameHeight = 5000;

                    capture.Read(frame);

                    cameraCount = cameraCount + 1;
                    textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견됨 (" + capture.FrameWidth+ "*" + capture.FrameHeight + ")";
                    
                }
                else
                {
                    textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견실패";
                }

해상도를 강제로 엄청 높게 지정해준 뒤에, 카메라의 값을 다시 read 해주자.

 

이제 카메라가 지원하는 최대 해상도 값을 찾을 수 있다.

 

ps. 로지텍 full -hd 웹캠은 스팩오버로 3k 해상도를 max 로 출력하였다.

'openCV' 카테고리의 다른 글

openCV 4 를 닷넷(C#) 에서 사용하기  (0) 2019.05.14

+ Recent posts