2012년 3월 19일 월요일

2012년 3월 17일 토요일

opencv python

opencv, numpy 설치시

cv2 : c++ 바인드, 가장 최신
cv : c 바인드, 예전 버젼

이미지 로우딩 :
import cv2,cv
im = cv2.imread("file.jpg")
im : numpy.ndarray 로 return

src: numpy.ndarray
grey_src = cv2.cvtColor(src : numpy.ndarray, cv.CV_RGB2GRAY)
grey_src : numpy.ndarray

이미지 저장 :
import cv2
cv2.imwrite("파일명", numpy.ndarry=> 위의 im 같은값)

2012년 3월 16일 금요일

python gif to jpg

from Image
im = Image.open("fromfile")
rgb = im.convert("RGB")
rgb.save("tofile")


sicp 2.59


#lang racket
(define (element-of-set? x set)
  (cond ((null? set) false)
        ((equal? x (car set)) true)
        (else (element-of-set? x (cdr set)))))

(define (adjoin-set x set)
  (if (element-of-set? x set)
      set
      (cons x set)))

(define (intersection-set set1 set2)
  (cond ((or (null? set1) (null? set2)) '())
        ((element-of-set? (car set1) set2)      
         (cons (car set1)
               (intersection-set (cdr set1) set2)))
        (else (intersection-set (cdr set1) set2))))


;; 2.59
(define (union-set set1 set2)
  (cond ((null? set1) set2)
        ((element-of-set? (car set1) set2)      
         (cons (car set1)
               (union-set (cdr set1) (cdr set2))))
        (else (cons (car set1) (union-set (cdr set1) set2)))))

(union-set '(1 2 3 4) '(2 3 4))

sicp 2.58


#lang racket
(define (deriv exp var)
  (cond ((number? exp) 0)
        ((variable? exp)
         (if (same-variable? exp var) 1 0))
        ((sum? exp)
         (make-sum (deriv (addend exp) var)
                   (deriv (augend exp) var)))
        ((product? exp)
         (make-sum
           (make-product (multiplier exp)
                         (deriv (multiplicand exp) var))
           (make-product (deriv (multiplier exp) var)
                         (multiplicand exp))))
        (else
         (error "unknown expression type -- DERIV" exp))))

(define (variable? x) (symbol? x))

(define (same-variable? v1 v2)
  (and (variable? v1) (variable? v2) (eq? v1 v2)))

(define (make-sum a1 a2)
  (cond ((=number? a1 0) a2)
        ((=number? a2 0) a1)
        ((and (number? a1) (number? a2)) (+ a1 a2))
        (else (list a1 '+ a2))))

(define (=number? exp num)
  (and (number? exp) (= exp num)))

(define (make-product m1 m2)
  (cond ((or (=number? m1 0) (=number? m2 0)) 0)
        ((=number? m1 1) m2)
        ((=number? m2 1) m1)
        ((and (number? m1) (number? m2)) (* m1 m2))
        (else (list m1 '* m2))))

(define (sum? x)
  (and (pair? x) (eq? (cadr x) '+)))

(define (addend s)
  (cond ((equal? (cddr s) '()) 0)
        (else (car s))))

(define (augend s)
  (cond ((equal? (length  (cddr s)) 1) (caddr s))
        (else (cddr s))))

(define (product? x)
  (and (pair? x) (eq? (cadr x) '*)))

(define (multiplier p)
   (car p))

(define (multiplicand p)
  (cond ((equal? (length  (cddr p)) 1) (caddr p))
        (else (cddr p))))

(deriv ' (x + 3 * (x + y + 2)) 'x)
;;(deriv ' (x * (x * y)) 'x)
(deriv ' (x + x) 'x)
(deriv ' (x + x + y + 2) 'x)

(deriv (deriv (deriv ' (x * x * x) 'x) 'x) 'x)

2012년 3월 15일 목요일

sicp 2.57


#lang racket
(define (deriv exp var)
  (cond ((number? exp) 0)
        ((variable? exp)
         (if (same-variable? exp var) 1 0))
        ((sum? exp)
         (make-sum (deriv (addend exp) var)
                   (deriv (augend exp) var)))
        ((product? exp)
         (make-sum
           (make-product (multiplier exp)
                         (deriv (multiplicand exp) var))
           (make-product (deriv (multiplier exp) var)
                         (multiplicand exp))))
        (else
         (error "unknown expression type -- DERIV" exp))))

(define (variable? x) (symbol? x))

(define (same-variable? v1 v2)
  (and (variable? v1) (variable? v2) (eq? v1 v2)))

(define (make-sum a1 a2)
  (cond ((=number? a1 0) a2)
        ((=number? a2 0) a1)
        ((and (number? a1) (number? a2)) (+ a1 a2))
        (else (list '+ a1 a2))))

(define (=number? exp num)
  (and (number? exp) (= exp num)))

(define (make-product m1 m2)
  (cond ((or (=number? m1 0) (=number? m2 0)) 0)
        ((=number? m1 1) m2)
        ((=number? m2 1) m1)
        ((and (number? m1) (number? m2)) (* m1 m2))
        (else (list '* m1 m2))))

(define (sum? x)
  (and (pair? x) (eq? (car x) '+)))

(define (addend s)
  (cond ((equal? (cdr s) '()) 0)
        (else (cadr s))))

(define (augend s)
  (cond ((equal? (cdr s) '()) 0)
        (else (cons (car s) (cddr s)))))

(define (product? x)
  (and (pair? x) (eq? (car x) '*)))

(define (multiplier p)
  (cond ((equal? (cdr p) '()) 1)
        (else  (cadr p))))

(define (multiplicand p)
  (cond ((equal? (length  (cddr p)) 1) (caddr p))
        (else (cons (car p) (cddr p)))))

(deriv '(+ (+ x 3) x) 'x)
(deriv '(+  (+ x x) (+ x x)) 'x)
(deriv '(+  (+ (+ x x) x) x) 'x)
(deriv '(+  x x x) 'x)
;;(deriv '(+  x x x (+ x 3)) 'x)
(deriv '(*  x x ) 'x)
(deriv '(*  x x x) 'x)
(deriv '(*  (* x y) x) 'x)
(deriv '(*  x y x) 'x)

(deriv '(* (* x y) (+ x 3)) 'x)
;;'(+ (* x y) (* y (+ x 3)))

(equal? (deriv '(* x y (+ x 3)) 'x) (deriv '(* (* x y) (+ x 3)) 'x))

2012년 3월 14일 수요일

원주율 구하기


#lang racket
;; 라이프니츠의 공식
(define (findpi current result add)
   (cond ((> current 10000000) (* 4 result))
         (else
          (cond ((equal? + add) (findpi (+ current 2) (+ result (/ 1 (+ current 2))) -))
                ((equal? - add) (findpi (+ current 2) (- result (/ 1 (+ current 2))) +))))))

;; 오일러의 식 
(define (findpi2 current result)
   (cond ((> current 10000000) (sqrt (* 6 result)))
         (else (findpi2 (+ current 1) (+ result (/ 1 (* current current)))) )))

2012년 3월 7일 수요일

2012년 3월 6일 화요일

sockjs

sockjs 종류


  •  client lib
    • SockJS-client JavaScript client library
      • 웹소켓 같은 object을 SockJS라고 자바스크립트 lib로 제공
      • Websocket을 지원하지 않는 브라우저에서도 사용가능
  • Server lib


To Do




opencv 삽질 일기

Python + opencv 삽질
1. 이미지 threshold 해보자고 도전
2. C++ 예제보고 python삽질 시작
3. C++ 처럼 파라미터 어떻게 넘길까 뻘짓하다가 검색하니 바로 나옴
4. 제대로 다 했는데 이제 이미지가 일차적으로 그레이 변환이 안됨 짜증
5. cv2로 이미지 로딩 일차 그레이 변환해도 안되서 cv로 했더니 이젠 gif는 로딩 못함
6. 그나마 Python은 pil로 가능할꺼 같은데 될런지
%스캔 이미지 리사이즈 어떻게 찾다가 아직도 헤메고 있네 이젠 거의 다 된거 같은게 ㅡㅡ


7. IplImage -> cv::Mat or cvMat로 만들어진 api 없어서 포기
8. gif 이미지 경우는 그냥 jpg로 변경을 생각해봄.
9. 그래서 pil 찾아봤더니 이게 이게 또 쉽지가 않네 ㅡㅡ;;;
10. import Image
im = Image.open("파일")
im.convert("RGB")
im.save("파일.jpg")
11. 이랬더니 im.mode 가 P 라서 안됨.
12. 안되는게 뭐가 이렇게 많은지...
13. 이럴때 RGB로 변경은
14. http://www.pythonware.com/library/pil/handbook/imagepalette.htm


lut = im.resize((256, 1))
lut.putdata(range(256))
lut = lut.convert("RGB").getdata() 

# lut now contains a sequence of (r, g, b) tuples
15. 위의 걸로 해서 다시 도전해봐야 겠음. ㅡㅡ;;
import image
im = Image.open("파일")
rgb = im.convert("RGB")
rgb.save("파일.jpg")

16. gif 파일 jpg로 변경
17. cv2로 threshhold 처리
18. 소스

import cv2,cv,Image

threshold_value = 0
threshold_type = 3
MAX_VALUE = 255
MAX_TYP = 4
MAX_BINARY_VALUE= 255

def main():
    im = Image.open("IMG.gif")
    rgbimage = im.convert("RGB")
    rgbimage.save("IMG.jpg")
    src2 = cv2.imread("IMG.jpg")

    src_grey =  cv2.cvtColor(src2,cv.CV_RGB2GRAY)
    result, dest = cv2.threshold(src_grey,threshold_value,MAX_BINARY_VALUE,threshold_type)

    cv2.imwrite("reslt.jpg",dest)
 
if __name__ == "__main__" :
    main()

19.에러는 안 나는데. 이게 용량만 늘어남. 변환는 없음 ㅡㅡ;;
19.1 용량이 늘어난 이유: palette 이미지에서 rgb로 변환을 해서 그렇게 됐음. ㅡㅡa
20. 소스상의 에러는 없음. 다 제대로 돌아감. 근데 내가 가진 이미지는 왜? 제대로 되는게 없네 ㅡㅡa







2012년 3월 5일 월요일

python package tool


  • pip : sudo apt-get install python-pip
  • easy_install : sudo apt-get install python-setuptools

opencv


  • prerequisite
    • python 2.5 이상
    • g++ 
    • cmake
    • pip install numpy
    • sudo apt-get install python-dev






2012년 3월 1일 목요일

emacs 2.4 설치

sudo add-apt-repository ppa:cassou/emacs
sudo apt-get update
sudo apt-get install emacs-snapshot

mkdir ~/.emacs.d/
cd ~/.emacs.d

emacs init.el
(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)

재시작후
M-x package-refresh-contents
M-x package-install RET starter-kit RET

unity 패널 수정

sudo apt-get install dconf-tools