1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#!/usr/bin/python
import sys
import time
from opencv.cv import *
from opencv.highgui import *
class Picture(object):
def __init__(self, img):
self.img = img.encode(sys.getfilesystemencoding())
self.win_name = "Edge"
self.trackbar_name = "Threshold"
# create the window
cvNamedWindow(self.win_name, CV_WINDOW_AUTOSIZE)
# create the trackbar
cvCreateTrackbar(self.trackbar_name, self.win_name, 1, 100, self.on_trackbar)
def load_image(self):
try:
self.src_image = cvLoadImage(self.img, 1)
except Exception, why:
# opencv had inconsistent exception type
"Image was not loaded, reason: ", why
return
# create the output im
self.col_edge = cvCreateImage((self.src_image.width, self.src_image.height), 8, 3)
# convert to grayscale
self.gray = cvCreateImage((self.src_image.width, self.src_image.height), 8, 1)
self.edge = cvCreateImage((self.src_image.width, self.src_image.height), 8, 1)
cvCvtColor(self.src_image, self.gray, CV_BGR2GRAY)
# show the im
self.on_trackbar(0)
cvWaitKey(0)
def on_trackbar(self, position):
self.position = position
cvSmooth(self.gray, self.edge, CV_BLUR, 3, 3, 0)
cvNot(self.gray, self.edge)
# run the edge dector on gray scale
cvCanny(self.gray, self.edge, position, position * 3, 3)
# reset
cvSetZero(self.col_edge)
# copy edge points
cvCopy(self.src_image, self.col_edge, self.edge)
# show the im
cvShowImage(self.win_name, self.col_edge)
print "TrackBar value: ", self.get_pos()
def get_pos(self):
return self.position
if __name__ == "__main__":
file_name = "maPhoto.jpg"
pict = Picture(file_name)
pict.load_image() |
Partager