色块识别中的元组,【7]代表目标颜色区域的旋转角度,实际使用过程中,这个值非常不稳定,怎么办?
-
while(True): clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # 从感光芯片获得一张图像 blobs = img.find_blobs([green_threshold]) #find_blobs(thresholds, invert=False, roi=Auto),thresholds为颜色阈值, #是一个元组,需要用括号[ ]括起来。invert=1,反转颜色阈值,invert=False默认 #不反转。roi设置颜色识别的视野区域,roi是一个元组, roi = (x, y, w, h),代表 #从左上顶点(x,y)开始的宽为w高为h的矩形区域,roi不设置的话默认为整个图像视野。 #这个函数返回一个列表,[0]代表识别到的目标颜色区域左上顶点的x坐标,[1]代表 #左上顶点y坐标,[2]代表目标区域的宽,[3]代表目标区域的高,[4]代表目标 #区域像素点的个数,[5]代表目标区域的中心点x坐标,[6]代表目标区域中心点y坐标, #[7]代表目标颜色区域的旋转角度(是弧度值,浮点型,列表其他元素是整型), #[8]代表与此目标区域交叉的目标个数,[9]代表颜色的编号(它可以用来分辨这个 #区域是用哪个颜色阈值threshold识别出来的)。 if blobs: #如果找到了目标颜色 for b in blobs: #迭代找到的目标颜色区域 if(b[2]>x): x = b[2] jz_maxa = b # Draw a rect around the blob. #print("12") #print(jz_maxa) img.draw_rectangle(jz_maxa[0:4]) # rect #print(jz_maxa[0:4]) #print(jz_maxa[7]) #用矩形标记出目标颜色区域 img.draw_cross(jz_maxa[5], jz_maxa[6]) # cx, cy # 获取旋转角度(弧度) rotation_angle_rad = jz_maxa[7] # 将弧度转换为角度 rotation_angle_deg = math.degrees(rotation_angle_rad) #rotated_img = img.copy() #rotated_img.rotation_corr(x_rotation=0, y_rotation=0, z_rotation=rotation_angle_deg, roi=(jz_maxa[0], jz_maxa[1], jz_maxa[2], jz_maxa[3])) img.rotation_corr(x_rotation=0, y_rotation=0, z_rotation=math.degrees(jz_maxa[7]),corners=[(jz_maxa[0],jz_maxa[1]),(jz_maxa[0]+jz_maxa[2],jz_maxa[1]),(jz_maxa[0]+jz_maxa[2],jz_maxa[1]+jz_maxa[3]),(jz_maxa[0],jz_maxa[1]+jz_maxa[3])]) #img.rotation_corr(x_rotation=0, y_rotation=0, z_rotation=jz_maxa[7]) #img = img.copy(roi=(jz_maxa[0],jz_maxa[1],jz_maxa[2],jz_maxa[3])) # 默认设置只是进行一次检测...更改它们以搜索图像... for obj in tf.classify(net , img, min_scale=1.0, scale_mul=0.5, x_overlap=0.0, y_overlap=0.0): # 图像分类函数,参数(模型,图像,检测框,重叠度,x,y开始的点) #print("**********\nTop 1 Detect,ions at [x=%d,y=%d,w=%d,h=%d]" % obj.rect()) sorted_list = sorted(zip(labels, obj.output()), key = lambda x: x[1], reverse = True) # 打印准确率最高的结果 for i in range(1): print("%s = %f" % (sorted_list[i][0], sorted_list[i][1])) jz_maxa = 0 x = 0 time.sleep(0.1) ```我的代码如上,我想把识别到的色块矫正,但实际效果却非常不正常,该如何改进
-
提供实际的图片。
-
-
这个值是根据形状,拟合一个椭圆的方向。对于长条形的比较准。