Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

ValueError: total size of new array must be unchanged

$
0
0
Hello there I am building a OpenCv2 self driving RC car and want to train it With CNN (neural Network) first.The camera input is from a wireless Ip camera stream.The car has to move in different directions by tagging each frame with a control. eg:- left, right, forward and backward. The problem is that when I execute the code I get the following error:- Start collecting images... init done opengl support available doneu Traceback (most recent call last): File "collect_training_data.py", line 159, in CollectTrainingData() File "collect_training_data.py", line 30, in __init__ self.collect_image() File "collect_training_data.py", line 66, in collect_image temp_array = roi.reshape(1, 38400).astype(np.float32) ValueError: total size of new array must be unchanged Segmentation fault (core dumped) **Here the Code:-** __author__ = 'zhengwang' import urllib2 import numpy as np import cv2 import serial import pygame from pygame.locals import * class CollectTrainingData(object): def __init__(self): self.stream = urllib2.Request('http://192.168.42.129:8080/video') self.response = urllib2.urlopen(self.stream) self.bytes = bytes() # connect to a seral port self.ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1) self.send_inst = True # create labels self.k = np.zeros((4, 4), 'float') for i in range(4): self.k[i, i] = 1 self.temp_label = np.zeros((1, 4), 'float') pygame.init() self.collect_image() def collect_image(self): saved_frame = 0 total_frame = 0 # collect images for training print('Start collecting images...') e1 = cv2.getTickCount() image_array = np.zeros((1, 38400)) label_array = np.zeros((1, 4), 'float') # stream video frames one by one try: self.bytes = ' ' frame = 1 while self.send_inst: self.bytes += self.response.read(1024) first = self.bytes.find('\xff\xd8') last = self.bytes.find('\xff\xd9') if first != -1 and last != -1: jpg = self.bytes[first:last + 2] self.bytes = self.bytes[last + 2:] image = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.CV_LOAD_IMAGE_GRAYSCALE) # select lower half of the image roi = image[120:240, :] # save streamed images cv2.imwrite('training_images/frame{:>05}.jpg'.format(frame), image) #cv2.imshow('roi_image', roi) cv2.imshow('image', image) # reshape the roi image into one row array temp_array = roi.reshape(1, 38400).astype(np.float32) frame += 1 total_frame += 1 # get input from human driver for event in pygame.event.get(): if event.type == KEYDOWN: key_input = pygame.key.get_pressed() # complex orders if key_input[pygame.K_UP] and key_input[pygame.K_RIGHT]: print("Forward Right") image_array = np.vstack((image_array, temp_array)) label_array = np.vstack((label_array, self.k[1])) saved_frame += 1 self.ser.write(chr(6)) elif key_input[pygame.K_UP] and key_input[pygame.K_LEFT]: print("Forward Left") image_array = np.vstack((image_array, temp_array)) label_array = np.vstack((label_array, self.k[0])) saved_frame += 1 self.ser.write(chr(7)) elif key_input[pygame.K_DOWN] and key_input[pygame.K_RIGHT]: print("Reverse Right") self.ser.write(chr(8)) elif key_input[pygame.K_DOWN] and key_input[pygame.K_LEFT]: print("Reverse Left") self.ser.write(chr(9)) # simple orders elif key_input[pygame.K_UP]: print("Forward") saved_frame += 1 image_array = np.vstack((image_array, temp_array)) label_array = np.vstack((label_array, self.k[2])) self.ser.write(chr(1)) elif key_input[pygame.K_DOWN]: print("Reverse") saved_frame += 1 image_array = np.vstack((image_array, temp_array)) label_array = np.vstack((label_array, self.k[3])) self.ser.write(chr(2)) elif key_input[pygame.K_RIGHT]: print("Right") image_array = np.vstack((image_array, temp_array)) label_array = np.vstack((label_array, self.k[1])) saved_frame += 1 self.ser.write(chr(3)) elif key_input[pygame.K_LEFT]: print("Left") image_array = np.vstack((image_array, temp_array)) label_array = np.vstack((label_array, self.k[0])) saved_frame += 1 self.ser.write(chr(4)) elif key_input[pygame.K_x] or key_input[pygame.K_q]: print('exit') self.send_inst = False self.ser.write(chr(0)) break elif event.type == pygame.KEYUP: self.ser.write(chr(0)) # save training images and labels train = image_array[1:, :] train_labels = label_array[1:, :] # save training data as a numpy file np.savez('training_data_temp/test08.npz', train=train, train_labels=train_labels) e2 = cv2.getTickCount() # calculate streaming duration time0 = (e2 - e1) / cv2.getTickFrequency() print('Streaming duration:'), time0 print(tra.shape) print(train_labels.shape) print('Total frame:'), total_frame print('Saved frame:'), saved_frame print('Dropped frame'), total_frame - saved_frame finally: print 'doneu' if __name__ == '__main__': CollectTrainingData()

Viewing all articles
Browse latest Browse all 19555

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>