如何以编程方式更改ImageView.imshow中的缩放

时间:2019-08-10 17:08:08

标签: julia

基于此处的ImageView.imshow文档: https://github.com/JuliaImages/ImageView.jl

看起来应该可以以编程方式更改imshow查看器的缩放矩形,但是我无法找到具体方法来实现此目的,并且我不确定如何创建对象发送信号的正确类型。

如果我这样做:

guidict = imshow( videog )
zr = guidict["roi"]["zoomregion"]
zr

我得到:

10: "input-21" = ZoomRegion{RInt64}(XY(1..640, 1..480), XY(1..640, 1..480)) ZoomRegion{RInt64}

除了类型的复杂性外,我不明白为什么需要在此处两次指定缩放区域。

在任何情况下,如果我这样做:

push!( zr, ZoomRegion{RInt64}( XY(200..280, 280..360), XY(200:280, 280..360) ) )

(我尝试将X的缩放比例设置为200:280,将Y的缩放比例设置为280:360)

我收到以下错误:

ERROR: promotion of types UnitRange{Int64} and IntervalSets.Interval{:closed,:closed,Int64} failed to change any arguments
Stacktrace:
 [1] error(::String, ::String, ::String) at ./error.jl:42
 [2] sametype_error(::Tuple{UnitRange{Int64},IntervalSets.Interval{:closed,:closed,Int64}}) at ./promotion.jl:308
 [3] not_sametype(::Tuple{UnitRange{Int64},IntervalSets.Interval{:closed,:closed,Int64}}, ::Tuple{UnitRange{Int64},IntervalSets.Interval{:closed,:closed,Int64}}) at ./promotion.jl:302
 [4] promote at ./promotion.jl:285 [inlined]
 [5] XY(::UnitRange{Int64}, ::IntervalSets.Interval{:closed,:closed,Int64}) at /home/flynn/.julia/packages/GtkReactive/2h7NX/src/graphics_interaction.jl:93
 [6] top-level scope at none:0

有人有具体的示例吗?

1 个答案:

答案 0 :(得分:2)

缩放区域由两个部分组成,即全视图和当前视图。当您按下信号时,您仅在移动当前视图(可处理缩放)。

您可以在按下按钮时使用单位范围,

push!(zr, (200:280, 280:360))

要将其重置为完整视图,只需执行以下操作

push!(zr, zr.value.fullview)