def __init__(self, **traits): super(HistDemo, self).__init__(**traits) img = cv.imread("lena.jpg") gray_img = cv.Mat() cv.cvtColor(img, gray_img, cv.CV_BGR2GRAY) self.img = gray_img self.img2 = self.img.clone() result = cv.MatND() r = cv.vector_float32([0, 256]) ranges = cv.vector_vector_float32([r, r]) cv.calcHist( cv.vector_Mat([self.img]), channels=cv.vector_int([0, 1]), mask=cv.Mat(), hist=result, histSize=cv.vector_int([256]), ranges=ranges, ) data = ArrayPlotData(x=np.arange(0, len(result[:])), y=result[:]) self.plot = Plot(data, padding=10) line = self.plot.plot(("x", "y"))[0] self.select_tool = RangeSelection(line, left_button_selects=True) line.tools.append(self.select_tool) self.select_tool.on_trait_change(self._selection_changed, "selection") line.overlays.append(RangeSelectionOverlay(component=line)) cv.imshow("Hist Demo", self.img) self.timer = Timer(50, self.on_timer)
def __init__(self, **traits): super(HistDemo, self).__init__(**traits) img = cv.imread("lena.jpg") gray_img = cv.Mat() cv.cvtColor(img, gray_img, cv.CV_BGR2GRAY) self.img = gray_img self.img2 = self.img.clone() result = cv.MatND() r = cv.vector_float32([0, 256]) ranges = cv.vector_vector_float32([r, r]) cv.calcHist(cv.vector_Mat([self.img]), channels=cv.vector_int([0, 1]), mask=cv.Mat(), hist=result, histSize=cv.vector_int([256]), ranges=ranges) data = ArrayPlotData(x=np.arange(0, len(result[:])), y=result[:]) self.plot = Plot(data, padding=10) line = self.plot.plot(("x", "y"))[0] self.select_tool = RangeSelection(line, left_button_selects=True) line.tools.append(self.select_tool) self.select_tool.on_trait_change(self._selection_changed, "selection") line.overlays.append(RangeSelectionOverlay(component=line)) cv.imshow("Hist Demo", self.img) self.timer = Timer(50, self.on_timer)
def get_focus_measure(src, kind): # from numpy import r_ # from scipy import fft # from pylab import plot, show # w = 100 # h = 100 # x = (640 - w) / 2 # y = (480 - h) / 2 # src = crop(src, x, y, w, h) # src = grayspace(src) # d = src.ndarray # # # print d[0] # # print d[-1] # fftsig = fft(d) # d = abs(fftsig) # print d.shape # dst = src.clone() # cv.convertScaleAbs(cv.asMat(d), dst, 1, 0) # return dst # xs = xrange(len(ys)) # plot(xs, ys) # show() # N = len(d) # f = 50000 * r_[0:(N / 2)] / N # n = len(f) # # print f # d = d.transpose() # d = abs(fftsig[:n]) / N # print d # # plot(f, d[0], 'b', f, d[1], 'g', f, d[2], 'r') # plot(f, d) # show() planes = cv.vector_Mat() src = cv.asMat(src) laplace = cv.Mat(src.size(), cv.CV_16SC1) colorlaplace = cv.Mat(src.size(), cv.CV_8UC3) cv.split(src, planes) for plane in planes: cv.Laplacian(plane, laplace, 3) cv.convertScaleAbs(laplace, plane, 1, 0) cv.merge(planes, colorlaplace) f = colorlaplace.ndarray.flatten() # f.sort() # print f[-int(len(f) * 0.1):], int(len(f) * 0.1), len(f) # len(f) return f[-int(len(f) * 0.1):].mean()
def isolate_color(src, channel): planes = cv.vector_Mat() cv.split(src, planes) w, h = src.size() for i in range(3): if i == channel: continue planes[i] = cv.Mat(src.size(), cv.CV_8UC1) dst = cv.Mat(src.size(), cv.CV_8UC3) cv.merge(planes, dst) print dst return dst
# -*- coding: utf-8 -*- import pyopencv as cv import numpy as np img = cv.imread("fruits_section.jpg") img_hsv = cv.Mat() cv.cvtColor(img, img_hsv, cv.CV_BGR2HSV) channels = cv.vector_int([0, 1]) result = cv.MatND() r = cv.vector_float32([0, 256]) ranges = cv.vector_vector_float32([r, r]) cv.calcHist(cv.vector_Mat([img_hsv]), channels, cv.Mat(), result, cv.vector_int([40, 40]), ranges) result[:] /= np.max(result[:]) / 255 2 ### img2 = cv.imread("fruits.jpg") img_hsv2 = cv.Mat() cv.cvtColor(img2, img_hsv2, cv.CV_BGR2HSV) img_bp = cv.Mat() cv.calcBackProject(cv.vector_Mat([img_hsv2]), channels=channels, hist=result, backProject=img_bp, ranges=ranges) 3 ###
# -*- coding: utf-8 -*- import pyopencv as cv import numpy as np img = cv.imread("fruits_section.jpg") img_hsv = cv.Mat() cv.cvtColor(img, img_hsv, cv.CV_BGR2HSV) channels = cv.vector_int([0, 1]) result = cv.MatND() r = cv.vector_float32([0, 256]) ranges = cv.vector_vector_float32([r, r]) cv.calcHist(cv.vector_Mat([img_hsv]), channels, cv.Mat(), result, cv.vector_int([40, 40]), ranges) result[:] /= np.max(result[:]) / 255 2### img2 = cv.imread("fruits.jpg") img_hsv2 = cv.Mat() cv.cvtColor(img2, img_hsv2, cv.CV_BGR2HSV) img_bp = cv.Mat() cv.calcBackProject(cv.vector_Mat([img_hsv2]), channels=channels, hist=result, backProject=img_bp, ranges = ranges) 3###
# -*- coding: utf-8 -*- import pyopencv as cv import numpy as np img = cv.imread("lena.jpg") result = cv.MatND() r = cv.vector_float32([0, 256]) ranges = cv.vector_vector_float32([r, r]) cv.calcHist(cv.vector_Mat([img]), channels=cv.vector_int([0, 1]), mask=cv.Mat(), hist=result, histSize=cv.vector_int([30, 20]), ranges=ranges) hist, _x, _y = np.histogram2d(img[:, :, 0].flatten(), img[:, :, 1].flatten(), bins=(30, 20), range=[(0, 256), (0, 256)]) print np.all(hist == result[:])
# -*- coding: utf-8 -*- import pyopencv as cv import numpy as np img = cv.imread("lena.jpg") result = cv.MatND() r = cv.vector_float32([0, 256]) ranges = cv.vector_vector_float32([r, r]) cv.calcHist( cv.vector_Mat([img]), channels=cv.vector_int([0, 1]), mask=cv.Mat(), hist=result, histSize=cv.vector_int([30, 20]), ranges=ranges, ) hist, _x, _y = np.histogram2d(img[:, :, 0].flatten(), img[:, :, 1].flatten(), bins=(30, 20), range=[(0, 256), (0, 256)]) print np.all(hist == result[:])