我正在尝试使用R
magick
包进行规定转换。
我想对下图中的透视图进行纠偏和校正。
我无法得到想要的结果。我做错了什么?
library(magick)
imgfile <- "test_skew.jpg"
img <- magick::image_read(imgfile)
# input coordinates
inp <- list(x = c(29.5740973594396, -6.62134003951859, 322.64038081552,
307.461649003054),
y = c(-5.74456619364109, 515.002694449434,
490.483204598527, -2.24178192922578))
plot(img)
polygon(inp$x, inp$y, border = "red")
text(inp$x[1], inp$y[1], label = "1", col = 'red')
text(inp$x[2], inp$y[2], label = "2", col = 'red')
text(inp$x[3], inp$y[3], label = "3", col = 'red')
text(inp$x[4], inp$y[4], label = "4", col = 'red')
# output coordinates
outp <- list(y = c(0, 520, 520, 0),
x = c(0, 0, 334, 334))
polygon(outp$x, outp$y, border = "blue")
text(outp$x[1]+10, outp$y[1]+10, label = "1", col = 'blue')
text(outp$x[2]+10, outp$y[2]-10, label = "2", col = 'blue')
text(outp$x[3]-10, outp$y[3]-10, label = "3", col = 'blue')
text(outp$x[4]-10, outp$y[4]+10, label = "4", col = 'blue')
我想通过将输入坐标(红色)扭曲为输出坐标(蓝色),使黑色边框成为一个完美的矩形。
# inx1,iny1 outx1,outy1 .... inx4,iny4 outx4,outy4
distc <- c(inp$x[1], inp$y[1], outp$x[1], outp$y[1],
inp$x[2], inp$y[2], outp$x[2], outp$y[2],
inp$x[3], inp$y[3], outp$x[3], outp$y[3],
inp$x[4], inp$y[4], outp$x[4], outp$y[4])
magick::image_distort(img,
"perspective", distc)
预期结果如下。
1条答案
按热度按时间cclgggtu1#
我不能读
R
,所以你的很多代码对我来说是丢失的,但是,我可以告诉你命令行参数,你需要使用它来让ImageMagick做你想做的事情。所以希望你能修改它来解决你的问题。-distort perspective
的参数是4对点:对于您的特定图像:
其产生:
希望你能看到黑框变成了矩形。