You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Racket中从HSV提取hue值报错,求正确提取方法

如何从Racket的hsv-color结构中提取色相(hue)值?

我正在开发一个将RGB颜色值转换为HSV,然后仅从中提取hue值进行操作的程序。编写的代码如下:

(define mycolor (make-color 12 168 45))
(define myhsv (color->hsv mycolor))
(define my-hue (vector-ref myhsv 0))

(displayln my-hue)

运行后返回如下错误:

vector-ref: contract violation
  expected: vector?
  given: (hsv-color 115/312 13/14 56/85 1.0)
  context...:

请问若后续要对hue值进行操作,正确的提取方式是什么?


解决方案

你用vector-ref出错是因为color->hsv返回的不是向量,而是hsv-color结构体,Racket对这类结构体提供了专门的访问器函数来获取各个分量:

  • hsv-color-hue:提取色相值
  • hsv-color-saturation:提取饱和度值
  • hsv-color-value:提取明度值
  • hsv-color-alpha:提取透明度值

修正后的代码:

(define mycolor (make-color 12 168 45))
(define myhsv (color->hsv mycolor))
(define my-hue (hsv-color-hue myhsv)) ; 用结构体访问器替代vector-ref

(displayln my-hue)

运行这段代码就能正确拿到色相值,之后直接对my-hue做数值操作即可。

内容的提问来源于stack exchange,提问作者JoshLeonthe1st

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 03:42:11