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_ntels quex_n + x_i = 255oùx_iest 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é. (en cas d'égalité avec le seuil, le pixel prendra la valeur \(1\))
Exemples
>>> 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, 124)
[[0, 0, 1, 1, 0], [0, 1, 1, 1, 0], [1, 1, 1, 0, 0], [1, 0, 0, 1, 1]]
Question 1 : fonction negatif:
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
.128013,[snaRcPmy7)f]ê4_wu2q9lI3 j(6ev0-8è;éxbokp/ihSg1t:5=dr050#0E0X0f0S0x0d0A0h0x0f0d0d0!010X0S0Q010406050d0t0j0j0f0$0k040U0O0x0t0`0O0e0A020f0j0Q0K0A0g0E140$0v0t0E0d050R111315170 0Q041v1C051F0R1F1H1C0 0#0S0F0/0;0?0^0T0S0V0T0x1V0T0X0}050*0N0x0E1Q0=0@011U1W1Y1W0X1(1*1$0X0N0O0#171%0$1D0X0T0/1a0d0Q0f0e0^0u011,1S010n0,0E0e1i0E1$27292e1.2h1*2k0j2m040a0A0i0$0O0Q0O0d0S1d1f0(250$0$0E0h2H1v2o0e1D0R232T0X2120220#2q0^1Y0e2j2E1$1N1P0:1-2%0S2)0e1}1O1$0Q2M1D2R2T2~10281f2/2f2@0$140x0}0W2Q320~312p341.36380}0u3c293e2R2$013j0f39040z3n2S0 3q3h0^3t3v0q3y3p323r3E0}0Z3H3A3J3C3s0O373u0}0D3O3f331R3i3T3k040l3Y3B3#3D3%3V040I3+3Q3-3S3U3v0w3H1E2|1v2-2W0#2!3r0h1}2w0%1O1D2{0E2}3d3}460(4e3g3^0P0}0(0n3}3,2:010s0}0A4q3@4s0e0n0}2)0V0f0`4p1w4f4r2f0|040C4x4k4z0}0S140V0E4P3!4s4M0m0Y3?4Q2f4u040A4,4w4I3o3Z3r0d0#0}004_2M0e0F0O0S1+1*0A0e0L4E4G0A2J0x004T0f4V0A0d0O0t0.0;0A0n3%1+0#000t2)0A1Y0d0X5n500S5u1t4_003O4-4w4K1.0h0W0}030A1e0/0$0L0L0A5q1+5b5d2J0G0A0f0t0M0A0j0p2v0.1N2v0e2F1e0.1r501+280$1i0J2X5U4U4W4/3z5E4;3R0e0}0T5!5v0t0$0r4T0V4X3r4M0b3H5F4y350}0;0$4V6a6c0j6e604+633^0O0}0!6j6x4R04671c0E6a6f3R4M4O6v6D6m045V5 305G0^4!6i6v6k4(3i6n156q0$6K3^6M6+6E6S6.4L0}0m5D4-6P6$042@0t0F0E0x1*6s5c6T3d6!4Y2f6z046B6Z6`6W0}0c0c6;1.0j0S0}0G6C6V014m045l6*7d7q65040B7p6l1.0O4*2=7B6#3D0N0}5_0e4V7j7f4N7P3s6%6p6I6b6d7S4!0o7H781.7s7u7$3K4S7+3R7E4S0e7.3^0e7K047M7O6O7q6-7}7C3D66687W6s6u6U81017!6^4,7e7r0}7*7w897y0S7?4s7:6R7=8i7I3s7_7{754:7~0}6N888s7y6G697X6t7Z6?4$6v065E627q7)3T8m6Q7A8r7%0^8o7G8V3K8u297|8B8W8a8z7S7y6o6)868I044#8c8N8O8j4C5g6 710E738(4J894M7i808C7-978*4M0o968)7,7z8=7#8!7/6A8S7k7m040u0Z3N9k6y0}0H9n826R5~8=9e93986R9i9D8x8{9h9a6g0}9j2~8M6_8P7L0)6a8q2~779g6}8~726:8L1v4h4d3~9,0R411v0X439;2Y2U1|1~2W0f1)9.411B4j8*2M0j0r0n0f0P900T0z0}1n1p5=0.8K301I3e1C0y0x0A1t0X0A2D0?0S9~571+465.2X0t0S2M5s0f5s5y5vas15251j5P0T2j5/1f8K1L492.3^1:1X1Z1#a23r2s2j2l0}2y0U0h0$0{ar0i0k231e3}4ca22 4f9+a$3R7s4o7S4*4.9f644B6|0E550S4Hb66,8,9M644S9Bbhbf8?ai3d9R8d9T7`9V0$9X768e959I2S8e7l3l9s9y017a9x9u6/bkbe4Z7g8-99bN6=049dbQ9LbS1.9cbG8Q7v9Y8e7y8Ub(7q8Ybw3o9Z648$7N8wbB8y7Rbl6E8/7W8=8A9E8*8kbMc29N8?0m9Pbxbs8hb,9K8lbK797Fb/2Sb;7@b?929J8s7 bY9z8Eb b|bTc1cqc3bj748=0mc93Y0Ra~9-2Ta0400)0+0-04.
Dessin original
Un dessin va s'afficher...
Dessin négatif
Un dessin va s'afficher...
Question 2 : fonction binaire:
Compléter le code ci-dessous :
###(Dés-)Active le code après la ligne
(Ctrl+I)
# Tests (insensible à la casse)(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
(Esc)
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
.128013snc)êwuqAl3 j(è;ébokp/h1tà,[aRPmy7]fE4_296ev8xdiSg:5=.0r050V0R0z0D0W0k0b0m0d0k0D0b0b0#010z0W0v010406050b0h0G0G0D0(0H040X0t0k0h0|0t0c0m020D0G0v0q0m0E0R160(0i0h0R0b050w13151719110v041x1E051H0w1H1J1E110V0W0S0;0?0^0`0x0W0Y0x0k1X0x0z0 050,0s0k0R1S0@0_011W1Y1!1Y0z1*1,1(0z0s0t0V191)0(1F0z0x0;1c0b0v0D0c0`0O011.1U010K0.0R0c1k0R1(292b2g1:2j1,2m0G2o040a0m0F0(0t0v0t0b0W1f1h0*270(0(0R0d2J1x2q0c1F0w252V0z2322240V2s0`1!0c2l2G1(1P1R0=1/2)0W2+0c1 1Q1(0v2O1F2T2V30122a1h2;2h2_0(160k0 0m0y2S3410332r361:383a3c0O3f2b3h2T2(013m0D3b040m0l3q2U113t3k0`3w3y0m0M3C3s343u3I3c0!3M3E3O3G3v0t393x3c0Q3T3i351T3l3Y3n3z0I3%3F3*3H3,3!3z0T3:3V3=3X3Z3J0P3{3j3}3Q040y0%423)2=3~3-0y3e1y3g3U434b450y3p4g3r4i4a373@3y0y3B4o3D3(3P4t0 0y3L4x3N4j4s3 4C3S4F1G2~1x2/2Y0V2$3u0d1 2y0)1Q1F2}0R2 3g3M054V0*4%4H1:0u0 0*0K4)3;4b0g3c4@3|4k0K0 0s2@0-2O4|4.0`0~040o554r3l0 0W160Y0R5b3u580B3M0m4z3W0c0 0b0R0h0.5j3W580e0Z493u4`3z0m5G5x3}0b0V0 005N2O0c0S0t0W1-0h2+0m5f0D5h0m512m0(0W0b0r1-2L0k005Y5!0b0t0h0:0?0m0K3,5i4F4q3u5K3c5G0m0V005V1-1!0b0z5,685)6b0:4V0c6b2m6i641v0m0%0m2H0m5_0S3x5u0(5C3W615F5G0V0h0m0v0W0U0R0k0m1v0z6q2Z0W2Q1q2l6N2@0K0r5(6w1-0D6E5t5v0k6y5J5L6B6L6N0y6q2@1g5N003T635o4^2h0d0y0 030m1g0;0(5+0m675X5g6c6o0m6#0U0m0G0f2x0:1P2x0c2H1g0:1t681-2a0(1k0p2Z1-5:5}30066`5p440 0x6#6b0h0(0N5f0Y5I4b5l5n7F4k0 0?0(5h7L7N0G7P4F6{4}2h0t0 0#7T6|5d047I1e6w7Q2h585a4M7:3H5e7a7_1:5z5m7(7U377W177Z6x7}7*830 7|327~3v805Z7B4(8j5z6_63877;2_0h0S6J1,7#8m7/8e0`7,047.868p0 0C0C820`0G0W0 488I8D014:045{8c307)568k040n8C8$0t5E2@8*5c3H0s0 7v0c5h8N017{8`5r047X8b7#7%8i8U5z0J8/3u8W8Y985q5e9c3}8,5e0c9f4k8=048@8_8d8$8|9q8:8%7?7K7M7O8`968r5H8j9a3Y9k88040W9H1:9h9J9j8T8$0c9m9o8n3r8t578g8}7H7J6w929A0 5A9C6`8#9u9F8Z3g9.3P0 8)9Q9u9N8.9`3P9T2b9p949r9Z9t9@8 8a9%9za65y9*5B5~9-ah9?3W8W0W4?9~9d9J81ac3}588Mas7V9J9)040Java39u8~9_aD5k0 97ao9g0 020k0z0q9L7 046%5waL7R0 af7Caia$aj7G048v8x0k8z7AazaC8o8U8~9Kaw7`aJa;9W8jaFazaK8!9X018F8Hb28j8P8R5n0m7Da%9D8U8W6J5taza!4hbeahb38~a+8y0R8Aa2a=a404a|2Ubp9ea_8faAbz4-aE9^b0aSb47-bLb9469,b38W2O0z7L9Pb7a?0 bra-bta/5~1x4+4$4Nb,0w4Q1x0z4Sb;2!2W1~202Y0D1+b.4Q1DbH3u2O0G0N0K0D0ubt0x0l0 1p1r7r0:bl9W1K3h1E0L1h0v1d7k680D277n2Z0h2Q0W737u271l750x2l7o0c0B72co5u6N1e0.5)0R0(771h2E6X0D9x0m6b0(2m0W2O6F5?cS788x0(cH77aP7vcC2a6R0bcJ165)0m0c0r2b0G5S7nc?cEcG0Wb~ch1G3h2/3u1=1Z1#1%c23W2u2l2n0 2A0X0d5(0v6N0F0H251g4)4#bH314(b+di3}8W4=8`5E5obD3H4 045$539VbA8J599!aq8BdL8{0 85bY9R5s5uaWaHad049+ag8s9E8?0+bWbLaubGb3bP8Sd$9/5eand~a7b(d+at8KdVa^e5aYbFdVaGbw9u58b19=b38FaOaQbL8~aV6)aX2hbh0/dR3zd{8QbQes4/0 9beBaTee3ra(4b9|bXeja~a08^ewb39sea9I907^dYeTefe3areUbE0e0eeieIbSeD9GeF8%e9eN8UeLeoePbva}95a5e%aT9weXe dZdUdYa@e$e!d,e)e+4y0wdDb-2Vc01I040j1_6Tcz1h0z5?6b5{5)cJ0V2b5^6n1~0c2+0:2}cX0Wcg6m6F2D0Y7v1A2JcJ0.6L6a0m2O4V1A0c0V0rfI1!8Pc!0m0A0m0Q5Xcv0(cx2JfD176s1X2+0$0m0j6E0*0k0AcJ1,272L0vcR2%2lf?2H511!0z0r0$da11b/0+0-0/04.
Dessin original
Un dessin va s'afficher...
Dessin binaire
Un dessin va s'afficher...
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)