Manipulation de pixels
On considĂšre une image en 256 niveaux de gris que lâon reprĂ©sente par une grille de nombres, câest-Ă -dire une liste composĂ©e de sous-listes toutes de longueurs identiques.
La largeur de lâimage est donc la longueur dâune sous-liste et la hauteur de lâimage est le nombre de sous-listes. On donne d'ailleurs les deux fonctions largeur
et hauteur
définies ci-dessous :
largeur et hauteur
đ Script Python
def largeur(image):
return len(image[0])
def hauteur(image):
return len(image)
Chaque sous-liste reprĂ©sente une ligne de lâimage et chaque Ă©lĂ©ment des sous-listes est un entier compris entre 0 et 255, reprĂ©sentant lâintensitĂ© lumineuse du pixel.
On s'intéresse à deux opérations :
- Le nĂ©gatif dâune image est lâimage constituĂ©e des pixels
x_n
tels quex_n + x_i = 255
oĂčx_i
est le pixel correspondant de lâimage initiale. - La binarisation d'une image qui consiste Ă remplacer tous les pixels par des 0 ou des 1 en fonction la position de la valeur initiale par rapport Ă un seuil donnĂ©.
Exemples
đ Console Python
>>> image_1 = [[20, 34, 254, 145, 6],
... [23, 124, 217, 225, 69],
... [197, 174, 207, 25, 87],
... [255, 0, 24, 197, 189]]
>>> hauteur(image_1)
4
>>> largeur(image_1)
5
>>> negatif(image_1)
[[235, 221, 1, 110, 249], [232, 131, 38, 30, 186], [58, 81, 48, 230, 168], [0, 255, 231, 58, 66]]
>>> binaire(image_1, 120)
[[0, 0, 1, 1, 0], [0, 1, 1, 1, 0], [1, 1, 1, 0, 0], [1, 0, 0, 1, 1]]
Compléter le code ci-dessous :
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activĂ©, le texte copiĂ© dans le terminal est joint sur une seule ligne avant d'ĂȘtre copiĂ© dans le presse-papier
.128013f6S=d-ĂšUpg2mRCj 8GP5)kLus_hq0:4yr./oxbc1w937veĂȘ[l,tĂ i]nĂ©;Ia(050f0U0Z0+0#0X0z0q0N0X0+0z0z0e010Z0#0j010406050z0y0m0m0+0H0G040d0K0X0y100K0%0q020+0m0j0)0q0n0U1a0H0C0y0U0z050J17191b1d150j04051I1B1L0J1I150f0#0T0^0`0|0~0B0#0k0B0X1Z0B0Z13050:0M0X0U1U0{0}011Y1!1$1!0Z1,1.1*0Z0H1J0Z0B0^1g0z0j0+0%0~0l011:1W010b0=0U0%1o0U1*26282d1=2g1.2j0m2l040a0q0t0H0K0j0K0z0#1j1l0.240H0H0U0N2G1B2n0%1J0J222S1 21201+0f2p0~1$0%2i2D1*1R1T0_1;2$0#2(0%0K2,1*0j2L1J2Q2S2}16271l2.2e2?0H1a0X130q0O2P3114302o331=3537390l3c283e2Q2#013j0+38040q0R3n2R153q3h0~3t3v0q0F3z3p313r3F390u3J3B3L3D3s0K363u390c3Q3f321V3i3V3k3w0S3!3C3%3E3)3X3w0r3-3S3/3U3W3G0Q3^3g3`3N040O0D3 3$2/3{3*0O3b1C3d3R4048420O3m4d3o4f47343;3v0O3y4l3A3#3M4q130O3I4u3K4g4p3|4z3P4C4n4x4G433Z4J4w3T4i3,4P3.4h4y433@4U3_4W4M0O3~4!4E3(4M0l454*4o4,3*0l4c2}4K4R4X0l4k4_4Q414|4t4 4V4F4?4B544#563=0l4I594+3:4-4O5f4;5h4?4T5k4L4?4Z5p4{4-4)5t514M0R4/2 1O2{1B2,2V0f212!3T0N2@2v0-1S1J2`0U2|3d3J055M0.5U5g010w130.0b5W551=0P395+5a3i0b130B0+1i0U0y0H5:5#12040,5~5l3s130#1a0k0U633r600v0E463r5.3w0q6k6b3T0z0f1302030R0Q0)6r6t6v6s6u2L0%0T0K0#1/1.0q2?0m0M2L0q2I1_2(0@2I670+696w6u6W6y6x3Q6k6l5,0~5%042L0Z5|0%3J0q504h0M132s6m3`60624C6=3466686a6~6(016d3Q4`3`6*5)6`486i6;745;3E5?040`0H695|7d2e6|7q3i716U732 756d6f4:6h396$7t0~6o6q6z6Z6X7K6B6D6F0q0`7R1b7o0H6N6G6Y6T6V7K6Y6Y6#7F756*6,6.6:6 3i6@7l2i7G76136}7y7i65047!7x5V7z130W7^0m0#135B827}600$0v787:6)5(0U5*7h5#7f7^0%7k2(0k0+108l7|5 7`8p7v697^7A6g3T7f7F8m647I047%7$7N2i7P6G1/0%0(8t8v7X7R7Z720q0z0K0y0@7S0b3)1/0f6Y0y2(7R0#0z0Z8.6G8@8_0z8N6x7(4J6$6;750N0O13030q1k0^0H0(0(0q8;1/808Y0D0q5_0L0q0m0V2u6R672i2E1k0@1x8S0q270H1o0h1 9i727)6%7}0%5@5_8_5|0A670k8D130Y7/759M7l7U5{0H9R0m9T4C947}0K130e9X9L9N5`7p8J6c8z9_4R8B813o8h7_040v9W9+a19Z7m7V9U618A7 9I9|6{138f927*9=042?0y0T0U0X1.9(7w9;5#9.049:a683040W85ag488789aw646*8,5}aBam0paK3r0K6i2;aS4R7=9D0%8CaG7r9{8x64a89#9Q9Sab0v0$aX7a13aNa?4h66a`2eaU666/aP5#0%aZ28a$a*9`aca%7u045^9@9%a/bb0~6da=ak9K5#aM3Va}bc0#br0~a 7 b12}9,b3b5a#9 2Ra17sbi7~be9Pbg9)a:7B4_9393a1bpaObza713aRb264bwaWb!3MbCb78b8ybab89}9!7n9$9(9*b/aha3bP4ebRb~bAa+13aoaqas0Uaub+a0aCaFb_a{7 ab0$cbb,c104bZcca(04blbW75ayaAcq7}aI045d5e3dc0aT130gbu7~80abchc9ambtbI8dcJbF9YbYcf9JcB3T7,0/7.b(b:c3aratcH4J79487b8k7^8obI8q130M2;0;2Lab7{ci3M9~aba5cub3130z5{0=bO8F3`8H6lbI8L8 7M6x7O6E1/9h0q9jc@2j0H8@0(8`8Z7K9j8%8)7T0qaN2ud9488L938/7Kdl1$8^dtdK8}240%8_2jdQ7X0@9l2Edz0T3u9$dD2edF6$0f0y9B0#0Lar0q1z0Z8$1 0#2N1u2id=2;0b0(dq9$1/5_8$d60Xd$1=d(6k0/3a8$2;1kdf7L0)cUa196989a329ddk8=9j2I9l9n9p9r1z6N9u0%9weB0q9z7R1/9C9E9GdmafbQald3bd9Ob?bhcm1=60d1cAbXb;7Vb@cFcscF9ZbKd#cNa)c}b:c)eUbjaieX3ocV416^a-bVe/b`c|cKePe;e 4877bme`cdc$c5c7bE3wa1e(c!b`aE8688048ae_bTa^bqficdcleYcraVbyfw9Lb*febGe.f2cja9eSbNe-a3cpfAbofre~fpcRcefta~fye)fCc{ade+a.fKe=a2a;ej7+fQe)a|fV1=b$fzfSfB13a!c8cQ8cfFf}ePf$bMb^f5cn6ecUbSf-04a_f;3EcSgd01f?fYf`b6fDaCf1g0fHe}e$fLg7f8b f970an8(c4c(eMg5eV84adcMf)cOadfvfGb9fNf^ax9/cFcwfo2Rgx1=6*0#8wfOcjf4gN3T60cP5!g%cfg,eZgMgpgOe%6q0X0Zeigg9Zd50yd7gg6*ard5gTfm4^b}eOaLf`cY0Hf@gWeZfbgCav4P0J5Y5T1M5E0J5G1B0Z5Iht2Y2T0+1-hohr5Q1Hg-3r2L0m0A0b0+0wc60B0R131t1v9z0@b|a01O3e2,3r0+0f0m1k2F0#9bd}ay1Hh!h$h(2G0g100Z1}040sdqc58Y6J6L1z1M3e1I0i8=0kh|6H2Ih 6Md;9m8)dX0+0j0jards941 1k0k041ad@0N7xina#040I0q0o5^eF0(0X0(2udT2Iit1{1/irdqite40qinap1/0!9g8=it0H0:2;8{0k2(0Yd:d=iUdliXiZiW1g1k2(0Ii2hE0*0Xd:8^0q5^c@6-d/0f00ihij1.7W5X5NfUhn3w6H0%18d 0K8Y7S6P0Ui(ebj85ZbZjbeG6Ijf2Aji0+240Xi;0Ui?hX15hC0ThY1Sh/h%0%h)h+8qh-1KjJh;h*0%h?2Fh_0x8|ey2i241p9d0B9vjTi@1K04jYdLd:320Kj%0(j)eBjT9B8(7W0.0@aq0HeC0@0yg`9Dj$27d_0zi(1a8@6I0(28h%2;0@5Mj@j_2EhAhUj,hZ3T1@1#1%1)hF3T2r2i2k132x0d0Ndq0jd=0t0G221k5W5Sg-2~5Vjbfq047cbIc:f)c=an0U8Wg!f!c;c gthV3Ag97}cX6-hecFg+g:75cwcyg^04cEg}k+gJgGk*fUl2cok_aQcTh2f.l0cke%fXg}fZfLgokye{e!e,l6lkeZg(g?g*aif+lbgbfsd2g.gggilhgkbDk)kZ9?bLlHgEgeaehkl60vlw4_c+2ec-g#g)da5/c;7kdoc_gmf~b.lMcGgDlYf69Vf/04g h1lQk-14k/fP6+hdhfffcal85#gUcFgZlXhgfTlslll:aDgHg/gLlalAcC8Mg`g|mjb:l@e6lxh4fegX0~cwh8gQhblyfRm9l9lClgmo41lilpadfI9^mKl4mbfEa3lSg$3rbUl=gImU3TlDmH6?lFf|mccnlqfTg2lLl/gymQaClRgP4vhmj9hphB5GjEm~5F0/0;0?04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)