diff --git a/jetson-deployment/Autofocus.py b/jetson-deployment/Autofocus.py deleted file mode 100755 index 4c417b6..0000000 --- a/jetson-deployment/Autofocus.py +++ /dev/null @@ -1,118 +0,0 @@ -import cv2 -import os - - -def focusing(val): - value = (val << 4) & 0x3ff0 - data1 = (value >> 8) & 0x3f - data2 = value & 0xf0 - os.system("i2cset -y 6 0x0c %d %d" % (data1, data2)) - - -def sobel(img): - img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) - img_sobel = cv2.Sobel(img_gray, cv2.CV_16U, 1, 1) - return cv2.mean(img_sobel)[0] - - -def laplacian(img): - img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) - img_sobel = cv2.Laplacian(img_gray, cv2.CV_16U) - return cv2.mean(img_sobel)[0] - - -# gstreamer_pipeline returns a GStreamer pipeline for capturing from the CSI camera -# Defaults to 1280x720 @ 60fps -# Flip the image by setting the flip_method (most common values: 0 and 2) -# display_width and display_height determine the size of the window on the screen - - -def gstreamer_pipeline(capture_width=3264, - capture_height=2464, - framerate=21, - quality=95): - return ('nvarguscamerasrc num-buffers=1 ! ' - 'video/x-raw(memory:NVMM), ' - 'width=(int)%d, height=(int)%d, ' - 'framerate=(fraction)%d/1 ! ' - 'nvjpegenc quality=%d ! ' - 'appsink' % (capture_width, capture_height, framerate, quality)) - - -# def gstreamer_pipeline(capture_width=3264, -# capture_height=2464, -# framerate=21): -# return ('nvarguscamerasrc ! ' -# 'video/x-raw(memory:NVMM), ' -# 'width=(int)%d,height=(int)%d, ' -# 'framerate=(fraction)%d/1 ! ' -# 'nvvidconv flip-method=2 ! ' -# 'video/x-raw,format=(string)BGRx ! ' -# 'videoconvert ! ' -# 'video/x-raw,format=(string)BGR ! ' -# 'appsink' % (capture_width, capture_height, framerate)) - - -def show_camera(): - max_index = 10 - max_value = 0.0 - last_value = 0.0 - dec_count = 0 - focal_distance = 10 - focus_finished = False - # To flip the image, modify the flip_method parameter (0 and 2 are the most common) - print(gstreamer_pipeline(flip_method=2)) - cap = cv2.VideoCapture(gstreamer_pipeline(flip_method=2), - cv2.CAP_GSTREAMER) - if cap.isOpened(): - window_handle = cv2.namedWindow('CSI Camera', cv2.WINDOW_AUTOSIZE) - # Window - while cv2.getWindowProperty('CSI Camera', 0) >= 0: - ret_val, img = cap.read() - cv2.imshow('CSI Camera', img) - - if dec_count < 6 and focal_distance < 1000: - #Adjust focus - focusing(focal_distance) - #Take image and calculate image clarity - val = laplacian(img) - #Find the maximum image clarity - if val > max_value: - max_index = focal_distance - max_value = val - - #If the image clarity starts to decrease - if val < last_value: - dec_count += 1 - else: - dec_count = 0 - #Image clarity is reduced by six consecutive frames - if dec_count < 6: - last_value = val - #Increase the focal distance - focal_distance += 10 - - elif not focus_finished: - #Adjust focus to the best - focusing(max_index) - focus_finished = True - # This also acts as - keyCode = cv2.waitKey(16) & 0xff - # Stop the program on the ESC key - if keyCode == 27: - break - elif keyCode == 10: - max_index = 10 - max_value = 0.0 - last_value = 0.0 - dec_count = 0 - focal_distance = 10 - focus_finished = False - cap.release() - cv2.destroyAllWindows() - else: - print('Unable to open camera') - - -if __name__ == '__main__': - show_camera()