Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 641|回复: 1

k210二值法处理图像

[复制链接]

1

主题

6

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2024-7-10 21:53:09 | 显示全部楼层 |阅读模式
import sensor, image, time,lcdimport car
THRESHOLD = (5, 19, -10, 17, -10, 10) #标的物的lab阈值

lcd.init()sensor.reset()sensor.set_vflip(True)                #括号内为True则为图像垂直反转
sensor.set_hmirror(True)              #括号内为True则为图像水平反转
sensor.set_pixformat(sensor.RGB565)   #采集图像的格式(RGB565格式)
sensor.set_framesize(sensor.QQQVGA)   #采集图像的分辨率大小为QQQVGA 【80x60 (4,800 像素)】 - O(N^2) max = 2,3040,000.
#sensor.set_windowing([0,20,80,40])
sensor.skip_frames(time = 2000)     
# WARNING: If you use QQVGA it may take seconds#跳过2000时钟使以上设置生效
clock = time.clock()                # to process a frame sometimes.
while(True):   
clock.tick()   
img = sensor.snapshot().binary([THRESHOLD])   
lcd.display(img)   
#截取一张图片snapshot();   
#对图片的中标的物阈值进行分割binary([THRESHOLD]),分割结果是,标的物标记为白色,非标为黑色;    #图片中所有像素与THRESHOLD中的阈值进行比较,THRESHOLD阈值内的标为白,否则标为黑。'''   
line = img.get_regression([(100,100)], robust = True)    #get_regression()对图像中所有符合阈值的像素(阈值像素)进行线性回归计算(即在正中心拟合成一条直线)
if (line):            #拟合出的直线
        rho_err = abs(line.rho())-img.width()/2        #abs()取绝对值;        #拟合线横截距的绝对值-宽度的一半
        if line.theta()>90:
            theta_err = line.theta()-180            #坐标轴的变换,第二象限变为0°~-90°
        else:
           theta_err = 90-line.theta()            #坐标轴的变换,第一象限变为90°~0°            #坐标轴整体变换为Y轴正半轴为0°,X轴正半轴为90°,X轴负半轴为-90°
        img.draw_line(line.line(), color = 127)            #将得到的拟合直线画出来
        print(rho_err,line.magnitude(),rho_err)            
      #line.magnitude(),线性回归的效果            #打印偏航角,线性回归效果'''

回复

使用道具 举报

391

主题

1222

帖子

3902

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3902
发表于 2024-7-11 09:12:59 | 显示全部楼层
  1. import sensor, image, time,lcd
  2. import car

  3. THRESHOLD = (5, 19, -10, 17, -10, 10) #标的物的lab阈值


  4. lcd.init()
  5. sensor.reset()
  6. sensor.set_vflip(True)                #括号内为True则为图像垂直反转
  7. sensor.set_hmirror(True)              #括号内为True则为图像水平反转
  8. sensor.set_pixformat(sensor.RGB565)   #采集图像的格式(RGB565格式)
  9. sensor.set_framesize(sensor.QQQVGA)   #采集图像的分辨率大小为QQQVGA 【80x60 (4,800 像素)】 - O(N^2) max = 2,3040,000.
  10. #sensor.set_windowing([0,20,80,40])
  11. sensor.skip_frames(time = 2000)     # WARNING: If you use QQVGA it may take seconds
  12. #跳过2000时钟使以上设置生效

  13. clock = time.clock()                # to process a frame sometimes.

  14. while(True):
  15.     clock.tick()
  16.     img = sensor.snapshot().binary([THRESHOLD])
  17.     lcd.display(img)
  18.     #截取一张图片snapshot();
  19.     #对图片的中标的物阈值进行分割binary([THRESHOLD]),分割结果是,标的物标记为白色,非标为黑色;
  20.     #图片中所有像素与THRESHOLD中的阈值进行比较,THRESHOLD阈值内的标为白,否则标为黑。
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-5 04:06 , Processed in 0.039420 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表