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.
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()
Kommentit
Tämän blogin kommentit tarkistetaan ennen julkaisua.