程序只能正确旋转方形图像

时间:2018-09-22 10:18:23

标签: c++ multidimensional-array pgm

我一直在尝试在C ++上使用PGM文件,获取它们的底片等。 现在,当我开始旋转时,我对如何旋转矩阵有了一个粗略的伪代码,这是数值矩阵上的结果:

Rotated matrix test

在纸上,这似乎是正确的。现在,当我使用相同的算法旋转图像时,它仅适用于正方形图像(即相同的高度和宽度):

Rotated Square Image

但是在矩形图像上,它会产生这种结果:

Rotated Rectangle image

代码如下:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(), 
  dashboardSidebar(
    sidebarMenu(
      menuItem("Modify",startExpanded = TRUE,
               menuSubItem("Sub-item 1", tabName = "subitem1"),
               menuSubItem("Sub-item 2", tabName = "subitem2")
      )
    )
  ),
  dashboardBody(
    tabItems(
      tabItem("subitem1", "Sub-item 1 tab content"),
      tabItem("subitem2", "Sub-item 2 tab content") 
    )
  )
)

server <- function(input, output, session) {

}

shinyApp(ui, server)

现在,我无法一辈子解码这里发生的事情以及什么使我的狗变成了小鹿:p

2 个答案:

答案 0 :(得分:0)

当图像不是矩形时,数组的形状(宽度和高度)不同。

您需要将数组旋转到另一个数组中,以使索引有意义。

int sourceMatrix[100][200];

int destMatrix[200][100];

答案 1 :(得分:0)

您不能翻转或转置非方阵。在进行数学运算之前,添加额外的行或列以使矩阵成正方形,然后进行数学运算,然后将添加的列或行剥离回去以获得没有填充的原始图像。