Beispiel #1
0
class MUcamera:
    def __init__(self):
        self.w = Webcam()

        self.start = self.w.start()
        self.im = self.w.grab_image()
        self.w.register_callback(self.average_intensity, 1)
        #        self.grabimage = self.w.grab_image()
        self.avg_intensity = []
        self.images = []
        self.filt_list = []
        self.f, self.ax = plt.subplots(1, 1)
        self.day = []

    def average_intensity(self):

        pix_val = list(self.im.getdata())
        pixel_intensity = []
        for x in pix_val:
            avg = sum(x) / len(x)
            pixel_intensity.append(avg)
        self.avg_pixel = np.average(pixel_intensity)
        self.avg_intensity.append(self.avg_pixel)
        return self.avg_intensity
#        avg  = np.mean(np.mean(image,axis=1))
#        self.avg_list.append(avg)

    def average_intensity_filtered(self):
        width = 3
        #        i=0

        if len(self.avg_intensity) >= 5:
            for x in range(len(self.avg_intensity) - 2):
                self.filt_list.append(
                    (self.avg_intensity[x] + self.avg_intensity[x + 1] +
                     self.avg_intensity[x + 2]) / width)
            return self.filt_list
        else:
            return self.filt_list
#        while i+width <= len(self.filt_list):
#            y = self.filt_list[i:i+width]
#            total_sum=sum(y)/width
#            self.filt_list.append(total_sum)
#            i+=1

#    def stop(self):
#        self.w.stop()
#        self.average_intensity_mean_plot()
#        self.average_intensity_filtered_plot()
#
#    def average_intensity_mean_plot(self):
#        self.ax.plot(self.avg_intensity, 'C1')
#        self.ax.set_xlabel('Image Number')
#        self.ax.set_ylabel('Intensity')
#        self.ax.set_title('Image Intensity')
##
#    def average_intensity_filtered_plot(self):
#        self.average_intensity_filtered()
#        self.ax.plot(self.filt_list, 'C2')
#

    def daytime(self):
        self.average = np.mean(np.mean(self.im, axis=1))
        if self.average >= 95:
            #            self.i.append(self.i)
            return print("True")
        else:
            return print("False")
##

    def most_common_color(self):
        w, h = self.im.size
        pixels = self.im.getcolors(w * h)
        print(len(pixels))
        most_frequent_pixel = pixels[0]
        for count, color in pixels:
            if count > most_frequent_pixel[0]:
                most_frequent_pixel = (count, color)

    #        compare("Most Common", image, most_frequent_pixel[1])
    #    print(self.most_frequent_pixel)
        return print(most_frequent_pixel[0] / len(pixels), most_frequent_pixel)

    def stop(self):
        self.w.stop()
        self.daytime()
        self.most_common_color()
        self.average_intensity_mean_plot()
        self.average_intensity_filtered_plot()

    def average_intensity_mean_plot(self):
        self.average_intensity()
        self.ax.plot(self.avg_intensity, 'C1')
        self.ax.set_xlabel('Image Number')
        self.ax.set_ylabel('Intensity')
        self.ax.set_title('Image Intensity')
#

    def average_intensity_filtered_plot(self):
        self.average_intensity_filtered()
        self.ax.plot(self.filt_list, 'C2')
Beispiel #2
0
class MUcamera:
    def __init__(self):
        self.w = Webcam()
        self.start = self.w.start()
        self.im = self.w.grab_image()
        self.w.register_callback(self.average_intensity, 1)
        self.avg_intensity = []
        self.images = []
        self.filtered = []
        self.f, self.ax = plt.subplots(1, 1)

#To find the average intensity

    def average_intensity(self, image):
        pix_val = list(image.getdata())
        pixel_intensity = []
        for x in pix_val:
            avg = sum(x) / len(x)
            pixel_intensity.append(avg)
        self.avg_pixel = np.average(pixel_intensity)
        self.avg_intensity.append(self.avg_pixel)
        return self.avg_intensity

#To find the average filtered intensity using width as 3

    def average_intensity_filtered(self):

        width = 3
        if len(self.avg_intensity) >= 5:
            for x in range(len(self.avg_intensity) - 2):
                self.filtered.append(
                    (self.avg_intensity[x] + self.avg_intensity[x + 1] +
                     self.avg_intensity[x + 2]) / width)
            return self.filtered
        else:
            self.filtered = self.avg_intensity
            return self.filtered

#To stop the execution of webcam.py

    def stop(self):
        self.w.stop()
        self.average_intensity_mean_plot()
        self.average_intensity_filtered_plot()
        self.daytime()
        self.most_common_color()

    #To plot the average intensity
    def average_intensity_mean_plot(self):

        self.ax.plot(self.avg_intensity, 'C1', label='Average')
        self.ax.legend()
        self.ax.set_xlabel('Image Number')
        self.ax.set_ylabel('Intensity')
        self.ax.set_title('Image Intensity')

#To plot the average filtered intensity

    def average_intensity_filtered_plot(self):
        self.average_intensity_filtered()
        self.ax.plot(self.filtered, 'C2', label='Filtered')
        self.ax.legend()

#To check if it is daytime or nighttime

    def daytime(self):
        self.average = np.mean(np.mean(self.im, axis=1))
        if self.average >= 95:
            return print("True")
        else:
            return print("False")


#To check the most common color

    def most_common_color(self):
        w, h = self.im.size
        pixels = self.im.getcolors(w * h)
        most_frequent_pixel = pixels[0]
        for count, color in pixels:
            if count > most_frequent_pixel[0]:
                most_frequent_pixel = (count, color)
        proportion = most_frequent_pixel[0] / len(pixels)
        return print(
            'The most common color is {}'.format(most_frequent_pixel[1]),
            'with a count of {}'.format(most_frequent_pixel[0]),
            'and the proportion of pixels is {}'.format(proportion))