perjantai, 25. marraskuu 2016

Pythonilla tolppaan - osa 3

import cv2
import numpy as np

img_rgb = cv2.imread('kt61.jpg')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)

temp = cv2.imread('match.jpg',0)
w, h = temp.shape[::-1]

res = cv2.matchTemplate(img_gray,temp,cv2.TM_CCOEFF_NORMED)
thresh = 0.6
loc = np.where( res >= thresh)

for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (255,0,0), 1)

cv2.imshow('Img',img_rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()

Untitled.jpg

kt_nspva3.jpg

sunnuntai, 30. lokakuu 2016

Pythonilla tolppaan - osa 2

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

img = cv2.imread('img_cpl.jpg', 0)
ret,trunc = cv2.threshold(img, 61, 255, cv2.THRESH_TRUNC)
ret,tozeroinv = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)

titles = ['Original','TRUNC','TOZERO_INV']
images = [img, trunc, tozeroinv]

for i in xrange(3):
    plt.subplot(1, 3, i+1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

plt.show()

Kuva otettu Hoya PL-CIR pyöröpolarisaatiosuotimella. Tolpassa on kamera.

Alkuperäinen
i-orig.jpg

Trunc
i-trunc.jpg

Tozero_inv
i-tozeroinv.jpg

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

img = cv2.imread('img.jpg',0)
can = cv2.Canny(img,10,200)

plt.subplot(121),plt.imshow(can,cmap = 'gray')
plt.title('Edge image'), plt.xticks([]), plt.yticks([])

plt.show()

camedge.jpg

 

lauantai, 29. lokakuu 2016

Kameratolppa: 650nm Fotga IR suodin

Sony Cyber-shot DSC-H9, kameratolpassa ei kameraa. Night-shot off asetus.

nsoff650.jpg

Sony Cyber-shot DSC-H9, kameratolpassa ei kameraa. Night-shot on asetus.

nson650-3.jpg

nson650.jpg

nson650-2.jpg

nson650-1.jpg

Sony Cyber-shot DSC-H9, kameratolpassa ei kameraa. Night-shot on-off kytkin puoliväli asetuksella.

nshalf650-2.jpg

nshalf650-1.jpg

nshalf650.jpg

 

 

perjantai, 28. lokakuu 2016

Pythonilla tolppaan - osa 1

Tietokoneella (tahi tabletti/älypuhelin) & zoomaavalla (video)kameralla voisi ohjelmallisesti havaita kameratolpan tahi kolmijalalla olevan siirrettävän nopeuskameran sekä sopivissa sääolosuhteissa myös tolpassa olevan kameran jo aika pitkän matkan päästä. OpenCV kirjasto höystettynä Numpy ja Matplotlib kirjastoilla (kaikki ilmaisia kirjastoja) mahdollistaa ko. operaation. Tässä alustavaa Python koodia/tutkailua aiheesta.

Ääriviivakuvan voi toteuttaa esim. Image thresholding kuvankäsittelytoiminnoilla.

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

img = cv2.imread('kt.jpg', 0)
img = cv2.medianBlur(img,5)

th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
            cv2.THRESH_BINARY,11,2)
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
            cv2.THRESH_BINARY,11,2)

titles = ['Original Image', 'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, th2, th3]

for i in xrange(3):
    plt.subplot(1,3,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

Kuva otettu IR suotimella. Tolpassa kamera.
irkuvax1.jpg

Operaatio videokuvalle

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

cap = cv2.VideoCapture(0)

while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    median = cv2.medianBlur(gray, 5)

    ath = cv2.adaptiveThreshold(median, 255, cv2.ADAPTIVE_THRESH_MEAN_C,\ cv2.THRESH_BINARY, 11, 2)

    cv2.imshow('cam', ath)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    
cap.release()
cv2.destroyAllWindows()

maanantai, 10. lokakuu 2016

Python 2.7 & openCV

Python ohjelmointikieli numplot ja matplotlib kirjastojen kanssa on kätevä ja helppo alusta nopeaan protoiluun openCV kirjaston kanssa. Kehitysympäristön toimimaan saaminen Windowsissa on hiukan kimuranttia.

1. Asenna python 2.7.12  https://www.python.org/downloads/
2. Asenna matplotlib-1.3.1.win32-py2.7.exe  https://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.3.1/
3. Asenna numpy-1.8.0-win32-superpack-python2.7  https://sourceforge.net/projects/numpy/files/NumPy/1.8.0/
4. Asenna opencv-2.4.13.exe  http://opencv.org/downloads.html

Avaa command prompt ja aja (pip on hakemistossa python27\scripts)
pip install python-dateutil
pip install pyparsing

Varmista toimivuus vaikka IDLE:ssä (Python GUI)
import numpy as np
import cv2
from matplotlib import pyplot as plt