Bu soruna yanıt vermek için bir kod yazdım.Flatindexed 2D dizisi - görüntüyü dikey/yatay olarak çevirme
X11 kullanarak gri ölçekli bir görüntü çizmek için bir program verdim.
Görüntüyü yatay/dikey olarak çevirmek için bir işlev yazmam istendi.
İşte olan yaşıyorum sorun benim yatay fonksiyon diğer yarısı özgün değerlerini korur, görüntüyü sadece yarı yolda çevirir olmasıdır benim kod parçacığı
// flip the image, left-to-right, like in a mirror.
void flip_horizontal(uint8_t array[],
unsigned int cols,
unsigned int rows)
{
int i;
int j;
for (i=0; i<rows;i++)
{
for (j=0; j<cols;j++)
{
array[rows*i+j]=array[rows*i+(cols-1-j)];
}
}
}
// flip the image top-to-bottom.
void flip_vertical(uint8_t array[],
unsigned int cols,
unsigned int rows)
{
int i=0;
int j=0;
for (i=0; i<rows;i++)
{
for (j=0; j<cols;j++)
{
array[rows*i+j]=array[rows*(rows-1-i)+j];
}
}
return;
}
olduğunu.
Dikey çevirme işlevim de bir karmaşadır ve üretilen görüntü hiç gerekmediği gibi görünmüyor, bu nedenle işlevleri yazmak için mantıkta bir hata yaptığım yerde hata ayıklamaya çalışıyorum.
2D dizi değerlerine erişmek için düz dizin yöntemini kullanıyorum.
C '=', "takas" anlamına gelmez. Ve yapsa bile, klasik "kelimeyi tersine çevir" diyerek, harfleri değiştirip tekrar takas yapabildin. –
Düz dizin: 'dizi [satırlar * i + j]' -> dizi [cols * i + j] ' –