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')
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))