Image drawing for pixel finished

This commit is contained in:
Alexandre LETOURNEUX 2024-11-26 12:02:12 +01:00
parent 93dfdc8485
commit 3367286b41
6 changed files with 69 additions and 43 deletions

BIN
assets/sins.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@ -1,43 +0,0 @@
import matplotlib.pyplot as plt
import dobot
import time
DRAW_MODE = 1
DRAW_SPEED = 1
DRAW_SIZE = 40
DRAW_DEPTH = -69
DRAW_RES = 2
INIT_POSITION = [240, -10]
dobot.setQueuedCmdClear()
dobot.setQueuedCmdStartExec()
dobot.setPTPJumpParams(5, 3, 1)
matrix = []
for x in range(INIT_POSITION[0], INIT_POSITION[0]+DRAW_SIZE, DRAW_RES):
for y in range(INIT_POSITION[1], INIT_POSITION[1]+DRAW_SIZE, DRAW_RES):
matrix.append((x,y))
for point in matrix:
dobot.setPTPCmd(1, point[0], point[1], DRAW_DEPTH+5, 0, 1)
dobot.setPTPCmd(1, point[0], point[1], DRAW_DEPTH, 0, 1)
dobot.setPTPCmd(1, point[0], point[1], DRAW_DEPTH+5, 0, 1)
dobot.setWaitCmd(3)
time.sleep(0.8)
def pixel_draw(resolution):
pass
def vector_draw(array):
for vector in array:
dobot.setCPCmd(DRAW_MODE, array.x, array.y, array.z, DRAW_SPEED, 1)
# Stop the current execution
if input("Appuyez sur Entrer pour arrêter.") == "":
dobot.setQueuedCmdForceStopExec()
dobot.setQueuedCmdClear()
# Define current workspace

69
src/image_drawer.py Normal file
View File

@ -0,0 +1,69 @@
import matplotlib.pyplot as plt
import dobot
import time
import cv2 as cv
# Drawing parameters
DRAW_MODE = 1
DRAW_SPEED = 1 # Drawing speed for
DRAW_DEPTH = -67.8 # Initial height (null)
DRAW_RES = 1 # Space between pixels
THRESHOLD = 70 # Min. intensityfrom which a pixel must be drawn
INIT_POSITION = [210, -60]
dobot.setQueuedCmdClear()
dobot.setQueuedCmdStartExec()
def pixel_draw(imagepath):
# Load Image
im = cv.imread(imagepath)
if im is None:
print("Error: Image not found at", imagepath)
exit()
# Resize Image
im = cv.resize(im, (0, 0), fx = 0.05, fy = 0.05, interpolation=cv.INTER_LINEAR)
# Convert to Grayscale
im = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
# Window name in which image is displayed
window_name = 'Display'
# Using cv2.imshow() method
# Displaying the image
im_display = cv.resize(im, (0, 0), fx = 10, fy = 10, interpolation=cv.INTER_LINEAR)
print(im)
print(im.shape[0], im.shape[1])
cv.imshow(window_name, im_display)
# waits for user to press any key
# (this is necessary to avoid Python kernel form crashing)
cv.waitKey(0)
for x in range(0, im.shape[0]-1):
for y in range(0, im.shape[1]-1):
value = im[x][y]
print(value)
if value >= THRESHOLD:
dobot.setPTPCmd(1, INIT_POSITION[0]+x*DRAW_RES, INIT_POSITION[1]+y*DRAW_RES, DRAW_DEPTH+2.5, 0, 1)
dobot.setPTPCmd(1, INIT_POSITION[0]+x*DRAW_RES, INIT_POSITION[1]+y*DRAW_RES, DRAW_DEPTH-(value/255), 0, 1)
dobot.setPTPCmd(1, INIT_POSITION[0]+x*DRAW_RES, INIT_POSITION[1]+y*DRAW_RES, DRAW_DEPTH+2.5, 0, 1)
#dobot.setWaitCmd(5)
time.sleep(0.8)
def vector_draw(array):
for vector in array:
dobot.setCPCmd(DRAW_MODE, array.x, array.y, array.z, DRAW_SPEED, 1)
pixel_draw("C:/Users/alexl/Documents/Cours/S7/IT and Robotics/GrpC_Identikit/assets/sins.jpg")
# Stop the current execution
"""if input("Appuyez sur Entrer pour arrêter.") == "":
dobot.setQueuedCmdForceStopExec()
dobot.setQueuedCmdClear()
"""
# Define current workspace