我的openmv运行以下程序 一两秒久会闪白灯卡死 一个h7 一个m4 都是这样 但是别人就能正常运行 求大佬答疑
-
import sensor, image, time, math ,os sensor.reset() # Reset and initialize the sensor. sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.QQVGA) # Set frame size to QQVGA (160x120) sensor.skip_frames(time = 2000) # Wait for settings take effect. def find_error(): # 初始化存放各区块方差的list stdev_list = [] # 初始化用于存放目标区块index的list index_list = [] # 获取图像,调整畸变 img = sensor.snapshot().lens_corr(strength = 1.1, zoom = 1.0) # 边缘检测(目的是提取不同区域的纹理), 边缘检测的阈值(threshold)由于不同队伍采用的摄像头型号和摆放位置的差异需要自行调整 img.find_edges(image.EDGE_CANNY, threshold=(80, 120)) # 横向切分20个区块并计算方差 for i in range(20): region = img.get_statistics(roi=(i*16, 150, 16, 90)) stdev_list.append(region.stdev()) # Console控制台查看输出结果 for i in range(20): print('Part' + str(i) + ':', stdev_list[i], end = '')
以下代码有两个版本,第一个版本为原始版本,经过测试;第二个是为了应对明暗变化的场景尝试优化的代码,未经实测
'''# 版本1: # # 初始化阈值(通过实地测试得到的方差之间的分界线),即方差值大于"最大值-阈值"的区块都是我们的目标区块 THRESHOLD = 25 # # 取最值: max_value = max(stdev_list) for i in range(20): if stdev_list[i] >= (max_value - THRESHOLD): index_list.append(i) # # 输出中位数,即小车行进的期望方向。作为pid控制的参数,应该约等于steady_state的值?原谅作者控制学的太烂了 output = math.floor(index_list[math.floor(len(index_list)/2)])-10 print("Output of median is {}".format(output)) return (output)
![0_1654824666452_Edge.py - OpenMV IDE 2022_6_10 9_29_02.png](https://fcdn.singtown.com/c628293c-a5b7-4fb3-a4a7-e905105d3626.png)
-
你这个代码不对,格式不对,而且不全,连死循环都没有。
我没办法运行。