消除frames直接的空隙

本文介绍了解决frame间显示间隙的方法,包括调整marginwidth和marginheight属性、使用Firebug检查定位问题源头等。通过这些技巧可以有效提升网页的专业度。

frame之间如果有空隙感觉比较不是很专业,通常消除frames直接的空隙注意这几个属性:

 

还有html的padding和margin,如果还不能消除空隙。就用firebug的click an element in the page to inspect 按钮,鼠标滑过空隙处,立马知道那个属性造成的空隙, 今天就碰到个问题发现两个frames之间的空隙无法消除,最后发现时table的cellpadding造成的。firebug感觉这方面还是比chrome的developer tools强,不过在浏览器中输入js代码chrome似乎更方便。

import sensor, image, time # 导入摄像头、图像处理、时间模块 from pyb import Pin, LED, Timer # 导入Pyboard的引脚、LED定时器模块 from machine import UART # 导入UART串口模块 uart_A = UART(3, 115200) # 创建UART对象,使用串口3,波特率115200 uart_A.init(115200, bits=8, parity=None, stop=1) # 初始化串口参数,8位数据,无校验,1位停止位 sensor.reset() # 初始化摄像头传感器 sensor.set_pixformat(sensor.RGB565) # 设置摄像头像素格式为RGB565 sensor.set_framesize(sensor.QVGA) # 设置摄像头分辨率为QVGA(320x240) sensor.skip_frames(time=333) # 跳过333ms的帧,等待画面稳定 sensor.set_auto_gain(False) # 关闭自动增益 sensor.set_auto_whitebal(False) # 关闭自动白平衡 pin1 = Pin('P0', Pin.IN, Pin.PULL_DOWN) # 初始化P0引脚为输入,下拉模式 EXPOSURE_TIME_SCALE = 1 # 曝光时间缩放因子 print("Initial exposure == %d" % sensor.get_exposure_us()) # 打印初始曝光时间 sensor.set_auto_gain(False) # 再次确保关闭自动增益 sensor.set_auto_whitebal(False) # 再次确保关闭自动白平衡 sensor.skip_frames(time=1000) # 跳过1000ms的帧,进一步稳定画面 current_exposure_time_in_microseconds = sensor.get_exposure_us() # 再次获取当前曝光时间 print("Current Exposure == %d" % current_exposure_time_in_microseconds) # 打印当前曝光时间 sensor.set_auto_exposure(False, exposure_us=int(current_exposure_time_in_microseconds * EXPOSURE_TIME_SCALE)) # 设置为手动曝光 red_led = LED(1) # 获取板载红色LED对象,编号为1 roi2 = [0, 0, 320, 240] # 设置ROI(感兴趣区域)为整幅画面 thresholds = (0, 14, -128, 127, -128, 127) # 非红色目标的颜色阈值(用于找最大斑点) red_threshold = (93, 100, -128, 127, -128, 127) # 红色目标的颜色阈值 # 各种任务点标志位,初始为0,表示未完成 TASK1_OK = 0 TASK2_OK = 0 TASK3_OK = 0 TASK4_OK = 0 top_left_OK = 0 top_mid_OK = 0 top_right_OK = 0 right_mid_OK = 0 bottom_left_OK = 0 bottom_mid_OK = 0 bottom_right_OK = 0 left_mid_OK = 0 # 舵机相关变量 pan_step = 1 # 水平增量步长 tilt_step = 1 # 垂直增量步长 last_pan = 0 # 上一次水平误差 last_tilt = 0 # 上一次垂直误差 set_pan = 0 # 当前水平PWM值 set_tilt = 0 # 当前垂直PWM值 jiaodian = 0 # 是否已获取了边框顶点(焦点),0为否,1为是 ledflag = 0 # 控制LED闪烁的次数 red_led.off() # 关闭红色LED largest_blob = None # 储存最大斑点对象 max_blob_area = 0 # 最大斑点面积 red_blobs = 0 # 红色斑点数量 def angle_to_pwm(angle): # 角度转PWM脉宽 angle_min = 0 # 最小角度 angle_max = 180 # 最大角度 pwm_min = 500 # 最小PWM pwm_max = 2500 # 最大PWM pwm = int((pwm_max - pwm_min) / (angle_max - angle_min) * angle + pwm_min) # 线性转换 pwm = int(pwm / 1) * 1 # 保证为整数 return pwm def SERVO_task(x, y): # 控制舵机移动到指定位置(用较慢速度) SERVO_data = "{{#000P{:04d}T0500!#001P{:04d}T0500!}}".format(x, y) # 构造舵机指令字符串 for i in range(4): # 连续发送4次,提升可靠性 uart_A.write(SERVO_data) time.sleep_ms(2) # 小延时 def SERVO_task3(x, y): # 控制舵机快速移动到指定位置 x = int(x / 1) * 1 # 转为整数 y = int(y / 1) * 1 # 转为整数 SERVO_data = "{{#000P{:04d}T0001!#001P{:04d}T0001!}}".format(x, y) # 舵机指令(最快速度) uart_A.write(SERVO_data) # 发送指令 def LED_task(ledflag): # 控制LED闪烁ledflag次 for l in range(0, ledflag, 1): red_led.on() time.sleep_ms(200) # 亮0.2秒 red_led.off() time.sleep_ms(200) # 灭0.2秒 def find_box_corners(edges): # 从边界点中找出四个角 if len(edges) < 1: return None top_left = edges[0] # 初始化四角 top_right = edges[0] bottom_left = edges[0] bottom_right = edges[0] for edge in edges: # 遍历所有点,按规则找出四角 x, y = edge if x + y < top_left[0] + top_left[1]: top_left = edge if x - y > top_right[0] - top_right[1]: top_right = edge if x - y < bottom_left[0] - bottom_left[1]: bottom_left = edge if x + y > bottom_right[0] + bottom_right[1]: bottom_right = edge # 坐标微调,优化顶点位置,避免检测误差 if top_left[1] < top_right[1] and top_left[1] < bottom_left[1] and top_left[1] < bottom_right[1] and abs(top_left[1] - top_right[1]) > 15: top_left = top_left[0] + 2, top_left[1] + 2 bottom_right = bottom_right[0] - 2, bottom_right[1] - 2 elif top_right[1] < top_left[1] and top_right[1] < bottom_left[1] and top_right[1] < bottom_right[1] and abs(top_left[1] - top_right[1]) > 15: top_right = top_right[0] - 2, top_right[1] + 2 top_left = top_left[0] + 2, top_left[1] bottom_left = bottom_left[0] + 2, bottom_left[1] - 2 else: top_right = top_right[0] - 3, top_right[1] + 3 top_left = top_left[0] + 3, top_left[1] + 3 bottom_right = bottom_right[0] - 3, bottom_right[1] - 3 bottom_left = bottom_left[0] + 3, bottom_left[1] - 3 return top_left, top_right, bottom_left, bottom_right def pan_can_angle(pan_servo_angle): # 限定水平舵机角度在安全范围 if pan_servo_angle <= 77: pan_servo_angle = 77 if pan_servo_angle >= 95: pan_servo_angle = 95 return pan_servo_angle def tilt_can_angle(tilt_servo_angle): # 限定垂直舵机角度在安全范围 if tilt_servo_angle <= 72: tilt_servo_angle = 72 if tilt_servo_angle >= 90: tilt_servo_angle = 90 return tilt_servo_angle TASK = 0 # 当前任务编号,0为无任务 time.sleep_ms(200) # 启动延时200ms print(TASK) # 打印初始任务编号 while True: # 主循环 # 1.根据P0状态选择任务 if pin1.value() == 1: # 如果外部按键或信号触发 TASK = 2 LED_task(TASK) # LED闪烁对应次数 print(TASK) else: TASK = 1 LED_task(TASK) print(TASK) # 2.任务未完成时初始化舵机位置 if TASK != 0 and TASK1_OK != 1 and TASK2_OK != 1 and TASK3_OK != 1 and TASK4_OK != 1: pan_angle = 90 # 水平中位 tilt_angle = 90 # 垂直中位 # 3.根据任务编号处理 if TASK == 0 or (TASK == 1 and TASK1_OK == 1) or (TASK == 2 and TASK2_OK == 1): img = sensor.snapshot() # 仅采集图像 elif TASK == 1 and TASK1_OK == 0: SERVO_task(angle_to_pwm(pan_angle - 2), angle_to_pwm(tilt_angle - 9)) # 舵机移动到指定位置 TASK1_OK = 1 # 标志任务1已完成 elif TASK == 2 and TASK2_OK == 0: # 执行一系列舵机移动,实现某种轨迹 SERVO_task(angle_to_pwm(pan_angle + 10), angle_to_pwm(tilt_angle - 18)) time.sleep_ms(1200) SERVO_task(angle_to_pwm(pan_angle - 12), angle_to_pwm(tilt_angle - 18)) time.sleep_ms(1200) SERVO_task(angle_to_pwm(pan_angle - 12), angle_to_pwm(tilt_angle + 1)) time.sleep_ms(1200) SERVO_task(angle_to_pwm(pan_angle + 10), angle_to_pwm(tilt_angle - 1)) time.sleep_ms(1200) SERVO_task(angle_to_pwm(pan_angle + 10), angle_to_pwm(tilt_angle - 18)) TASK2_OK = 1 # 标志任务2已完成 elif (TASK == 3 and TASK3_OK == 0) or (TASK == 4 and TASK4_OK == 0): # 进入检测与跟踪流程 SERVO_task(angle_to_pwm(pan_angle + 10), angle_to_pwm(tilt_angle - 9)) time.sleep_ms(800) while (TASK3_OK == 0 or TASK4_OK == 0): # 持续直到检测完毕 # 实时任务切换 if pin1.value() == 1 and TASK == 3: TASK = 4 # 切换为任务4 TASK3_OK = 0 left_mid_OK = 0 top_left_OK = 0 top_mid_OK = 0 top_right_OK = 0 right_mid_OK = 0 bottom_left_OK = 0 bottom_mid_OK = 0 bottom_right_OK = 0 jiaodian = 0 LED_task(TASK) break if pin1.value() == 1 and TASK == 4: TASK = 0 # 复位 time.sleep_ms(600) LED_task(TASK) break img = sensor.snapshot() # 获取实时图像 if jiaodian == 0: # 查找画面中的最大斑点,推测为目标框 blobs = img.find_blobs([thresholds], roi=roi2, pixels_threshold=0, area_threshold=0, merge=True) for blob in blobs: area = blob.area() if area > max_blob_area: largest_blob = blob max_blob_area = area if largest_blob: edges = largest_blob.min_corners() # 获取最小外接矩形的角点 top_left, top_right, bottom_left, bottom_right = find_box_corners(edges) img.draw_cross(top_left[0], top_left[1]) # 在图像上标记四个角 img.draw_cross(top_right[0], top_right[1]) img.draw_cross(bottom_left[0], bottom_left[1]) img.draw_cross(bottom_right[0], bottom_right[1]) up_w = top_right[0] - top_left[0] # 上边宽 up_h = top_left[1] - top_right[1] # 上边高(理论为0) left_w = bottom_left[0] - top_left[0] # 左边宽(理论为0) left_h = bottom_left[1] - top_left[1] # 左边高 print(up_w, up_h, left_w, left_h) # 打印框的几何信息 set_pan = angle_to_pwm(pan_angle + 10) # 设置舵机目标位置 set_tilt = angle_to_pwm(tilt_angle - 9) jiaodian = 1 # 标记已获取焦点 time.sleep_ms(400) # 查找红色斑点,进行坐标误差计算舵机控制 red_blobs = img.find_blobs([red_threshold], roi=roi2, pixels_threshold=0, area_threshold=2, merge=True) # === 顶点跟踪阶段1:左上点 === if TASK3_OK == 0 and ((jiaodian == 1 and top_left_OK == 0) or (jiaodian == 1 and top_left_OK == 1 and top_right_OK == 1 and bottom_right_OK == 1 and bottom_left_OK == 1)): if red_blobs: for red_blob in red_blobs: img.draw_cross(red_blob.cx(), red_blob.cy()) # 标记红点 if left_mid_OK == 0 and bottom_left_OK == 1: # 跟踪左中点 pan_error = red_blob.cx() - (top_left[0] + bottom_left[0]) / 2 tilt_error = red_blob.cy() - (top_left[1] + bottom_left[1]) / 2 else: # 跟踪左上点 pan_error = red_blob.cx() - top_left[0] tilt_error = red_blob.cy() - top_left[1] # 误差归一化限幅(防止过大或过小影响控制) if pan_error != 0 and tilt_error != 0: w_error = abs(pan_error / tilt_error) h_error = abs(tilt_error / pan_error) w_error = min(max(w_error, 0.2), 0.7) h_error = min(max(h_error, 0.2), 0.7) # 水平控制 if abs(pan_error - last_pan) < 3: if pan_error > 2: pan_step = w_error elif pan_error < -2: pan_step = -w_error if abs(pan_error) < 8: pan_step = 0 set_pan += pan_step # 垂直控制 if abs(tilt_error - last_tilt) < 3: if tilt_error > 2: tilt_step = -h_error elif tilt_error < -2: tilt_step = h_error if abs(tilt_error) < 8: tilt_step = 0 set_tilt += tilt_step last_pan = pan_error # 记录误差 last_tilt = tilt_error tilt_step = 0 pan_step = 0 # 判定到位 if abs(pan_error) < 8 and abs(tilt_error) < 8: if left_mid_OK == 0: left_mid_OK = 1 else: top_left_OK = 1 if bottom_left_OK == 1: if TASK == 3: TASK3_OK = 1 break elif TASK == 4: TASK3_OK = 0 left_mid_OK = 0 top_left_OK = 0 top_mid_OK = 0 top_right_OK = 0 right_mid_OK = 0 bottom_left_OK = 0 bottom_mid_OK = 0 bottom_right_OK = 0 SERVO_task3(int(set_pan), int(set_tilt)) # 实时发送舵机命令 # === 顶点跟踪阶段2:右上点 === if jiaodian == 1 and top_left_OK == 1 and top_right_OK == 0: if red_blobs: for red_blob in red_blobs: img.draw_cross(red_blob.cx(), red_blob.cy()) if top_mid_OK == 0: pan_error = red_blob.cx() - (top_right[0] + top_left[0]) / 2 tilt_error = red_blob.cy() - (top_right[1] + top_left[1]) / 2 else: pan_error = red_blob.cx() - top_right[0] tilt_error = red_blob.cy() - top_right[1] if pan_error != 0 and tilt_error != 0: w_error = abs(pan_error / tilt_error) h_error = abs(tilt_error / pan_error) w_error = min(max(w_error, 0.2), 0.7) h_error = min(max(h_error, 0.2), 0.7) if abs(pan_error - last_pan) < 3: if pan_error > 2: pan_step = w_error elif pan_error < -2: pan_step = -w_error if abs(pan_error) < 8: pan_step = 0 set_pan += pan_step if abs(tilt_error - last_tilt) < 3: if tilt_error > 2: tilt_step = -h_error elif tilt_error < -2: tilt_step = h_error if abs(tilt_error) < 8: tilt_step = 0 set_tilt += tilt_step print("pan_step=", pan_step, "tilt_step", tilt_step) tilt_step = 0 pan_step = 0 last_pan = pan_error last_tilt = tilt_error if abs(pan_error) < 8 and abs(tilt_error) < 8: if top_mid_OK == 0: top_mid_OK = 1 else: top_right_OK = 1 SERVO_task3(int(set_pan), int(set_tilt)) # === 顶点跟踪阶段3:右下点 === if jiaodian == 1 and top_left_OK == 1 and top_right_OK == 1 and bottom_right_OK == 0: if red_blobs: for red_blob in red_blobs: img.draw_cross(red_blob.cx(), red_blob.cy()) if right_mid_OK == 0: pan_error = red_blob.cx() - (top_right[0] + bottom_right[0]) / 2 tilt_error = red_blob.cy() - (top_right[1] + bottom_right[1]) / 2 else: pan_error = red_blob.cx() - bottom_right[0] tilt_error = red_blob.cy() - bottom_right[1] if pan_error != 0 and tilt_error != 0: w_error = abs(pan_error / tilt_error) h_error = abs(tilt_error / pan_error) w_error = min(max(w_error, 0.2), 0.7) h_error = min(max(h_error, 0.2), 0.7) if abs(pan_error - last_pan) < 3: if pan_error > 2: pan_step = w_error elif pan_error < -2: pan_step = -w_error if abs(pan_error) < 8: pan_step = 0 set_pan += pan_step if abs(tilt_error - last_tilt) < 3: if tilt_error > 1: tilt_step = -h_error elif tilt_error < -1: tilt_step = h_error if abs(tilt_error) < 8: tilt_step = 0 set_tilt += tilt_step print("pan_step=", pan_step, "tilt_step", tilt_step) tilt_step = 0 pan_step = 0 last_pan = pan_error last_tilt = tilt_error if abs(pan_error) < 8 and abs(tilt_error) < 8: if right_mid_OK == 0: right_mid_OK = 1 else: bottom_right_OK = 1 SERVO_task3(int(set_pan), int(set_tilt)) # === 顶点跟踪阶段4:左下点 === if jiaodian == 1 and top_left_OK == 1 and top_right_OK == 1 and bottom_right_OK == 1 and bottom_left_OK == 0: if red_blobs: for red_blob in red_blobs: img.draw_cross(red_blob.cx(), red_blob.cy()) if bottom_mid_OK == 0: pan_error = red_blob.cx() - (bottom_left[0] + bottom_right[0]) / 2 tilt_error = red_blob.cy() - (bottom_left[1] + bottom_right[1]) / 2 else: pan_error = red_blob.cx() - bottom_left[0] tilt_error = red_blob.cy() - bottom_left[1] if pan_error != 0 and tilt_error != 0: w_error = abs(pan_error / tilt_error) h_error = abs(tilt_error / pan_error) w_error = min(max(w_error, 0.2), 0.7) h_error = min(max(h_error, 0.2), 0.7) if abs(pan_error - last_pan) < 3: if pan_error > 2: pan_step = w_error elif pan_error < -2: pan_step = -w_error if abs(pan_error) < 8: pan_step = 0 set_pan += pan_step if abs(tilt_error - last_tilt) < 3: if tilt_error > 2: tilt_step = -h_error elif tilt_error < -2: tilt_step = h_error if abs(tilt_error) < 8: tilt_step = 0 set_tilt += tilt_step print("pan_step=", pan_step, "tilt_step", tilt_step) tilt_step = 0 pan_step = 0 last_pan = pan_error last_tilt = tilt_error if abs(pan_error) < 8 and abs(tilt_error) < 8: if bottom_mid_OK == 0: bottom_mid_OK = 1 else: bottom_left_OK = 1 left_mid_OK = 0 SERVO_task3(int(set_pan), int(set_tilt))这是main.py import time, image,sensor,math,pyb,ustruct, struct from image import SEARCH_EX, SEARCH_DS from pyb import Pin, Timer,LED sensor.reset() sensor.set_contrast(1) sensor.set_gainceiling(16) sensor.set_framesize(sensor.QQVGA) sensor.set_pixformat(sensor.GRAYSCALE) sensor.set_windowing((0, 50, 160, 50)) EXPOSURE_TIME_SCALE = 1 print("Initial exposure == %d" % sensor.get_exposure_us()) sensor.set_auto_gain(False) sensor.set_auto_whitebal(False) sensor.skip_frames(time = 1000) current_exposure_time_in_microseconds = sensor.get_exposure_us() print("Current Exposure == %d" % current_exposure_time_in_microseconds) sensor.set_auto_exposure(False, \ exposure_us = int(current_exposure_time_in_microseconds * EXPOSURE_TIME_SCALE)) uart = pyb.UART(3, 115200, timeout_char = 1000) data = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00] def servo_control(servo_ID): img_data_0 = "#000" + "PID00" + str(servo_ID) + "!" uart.write(img_data_0) print(img_data_0) time.sleep_ms(10) while(True): servo_control(0) #在这里写上要修改的ID号(下面控制左右摆动的设置舵机ID:000,上面控制上下的舵机设置ID:001) time.sleep_ms(1000)#servo_control(1)这样就是设置ID为1,记得设置舵机时 只连接一个舵机,别串连,不然两个舵机都设置成了同一个ID 这是SetID.py 将这个代码改成openmv控制两个舵机,进行图像识别,识别一个矩形的中心点,将舵机的正中心对准矩形的中心点,矩形四周用黑胶带做边框
07-31
import sensor, image, time, math sensor.reset() sensor.set_pixformat(sensor.GRAYSCALE) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time=2000) # 霍夫变换检测直线 def detect_triangles(img): lines = img.find_lines(threshold=1000, theta_margin=25, rho_margin=25) candidates = [] # 寻找可能的三角形边 for i in range(len(lines)): for j in range(i+1, len(lines)): for k in range(j+1, len(lines)): l1, l2, l3 = lines[i], lines[j], lines[k] # 计算交点 p1 = line_intersection(l1, l2) p2 = line_intersection(l2, l3) p3 = line_intersection(l3, l1) if p1 and p2 and p3: # 计算三角形面积 area = abs((p1[0]*(p2[1]-p3[1]) + p2[0]*(p3[1]-p1[1]) + p3[0]*(p1[1]-p2[1]))/2) if area > 100: # 过滤小面积 candidates.append((p1, p2, p3)) return candidates # 计算两条直线的交点 def line_intersection(line1, line2): x1, y1, x2, y2 = line1.line() x3, y3, x4, y4 = line2.line() denom = (y4-y3)*(x2-x1) - (x4-x3)*(y2-y1) if denom == 0: # 平行线 return None ua = ((x4-x3)*(y1-y3) - (y4-y3)*(x1-x3)) / denom ub = ((x2-x1)*(y1-y3) - (y2-y1)*(x1-x3)) / denom if 0 <= ua <= 1 and 0 <= ub <= 1: # 线段相交 x = x1 + ua*(x2-x1) y = y1 + ua*(y2-y1) return (int(x), int(y)) return None while True: img = sensor.snapshot() # 中值滤波去噪(引用[2]) img.median(1) # 检测三角形 triangles = detect_triangles(img) for tri in triangles: p1, p2, p3 = tri img.draw_line(p1[0], p1[1], p2[0], p2[1], color=255) img.draw_line(p2[0], p2[1], p3[0], p3[1], color=255) img.draw_line(p3[0], p3[1], p1[0], p1[1], color=255) # 计算中心点 cx = (p1[0] + p2[0] + p3[0]) // 3 cy = (p1[1] + p2[1] + p3[1]) // 3 img.draw_cross(cx, cy, color=255, size=10) def region_growing(img, seed): """区域生长算法""" directions = [(0,1), (1,0), (0,-1), (-1,0)] region = [] stack = [seed] while stack: x, y = stack.pop() if (x, y) not in region: region.append((x, y)) for dx, dy in directions: nx, ny = x+dx, y+dy if 0 <= nx < img.width() and 0 <= ny < img.height(): # 相似性判断(灰度值接近) if abs(img.get_pixel(x,y) - img.get_pixel(nx,ny)) < 10: stack.append((nx, ny)) return region def analyze_region(region): """分析区域形状特征""" xs = [p[0] for p in region] ys = [p[1] for p in region] min_x, max_x = min(xs), max(xs) min_y, max_y = min(ys), max(ys) # 计算宽高比 w, h = max_x - min_x, max_y - min_y aspect_ratio = w / h if h != 0 else 0 # 计算面积与边界框面积比 area = len(region) bbox_area = w * h density = area / bbox_area if bbox_area > 0 else 0 # 三角形特征:0.4 < density < 0.6, 0.7 < aspect_ratio < 1.3 if 0.4 < density < 0.6 and 0.7 < aspect_ratio < 1.3: return True return False # 在主循环中使用 while True: img = sensor.snapshot() img.median(1) # 中值滤波 # 采样种子点(实际应用中需要更智能的种子选择) seeds = [(img.width()//4, img.height()//4), (3*img.width()//4, img.height()//4), (img.width()//4, 3*img.height()//4), (3*img.width()//4, 3*img.height()//4)] for seed in seeds: region = region_growing(img, seed) if len(region) > 100 and analyze_region(region): # 过滤小区域 # 绘制区域边界 for x, y in region: img.set_pixel(x, y, 255) # 创建三角形模板 template = image.Image(30, 30, sensor.GRAYSCALE) # 绘制三角形 for i in range(15): template.draw_line(15-i, 15+i, 15+i, 15+i, color=255) template.draw_line(0, 29, 29, 29, color=255) # 在主循环中使用模板匹配 while True: img = sensor.snapshot() img.median(1) # 模板匹配 result = img.find_template(template, 0.7, step=4, search=image.SEARCH_EX) if result: img.draw_rectangle(result) img.draw_string(result[0], result[1], "Triangle", color=255) 此代码能识别三角形,但误差有点大,希望能识别黑色形状三角形,且只显示黑色三角形
最新发布
08-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值