From 6c876735f89e2ddb992452f8f4580d32b20f6915 Mon Sep 17 00:00:00 2001 From: Antoine Simoulin Date: Tue, 1 Jul 2025 06:46:16 -0700 Subject: [PATCH 1/2] Fix `_ImageDrawTV` --- torchvision/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchvision/utils.py b/torchvision/utils.py index eec7d21293f..050cc51d893 100644 --- a/torchvision/utils.py +++ b/torchvision/utils.py @@ -136,7 +136,7 @@ def oriented_rectangle(self, xy, fill=None, outline=None, width=1): width=width, fill=outline, ) - self.rectangle(xy, fill=fill, outline=None, width=0) + self.polygon(xy, fill=fill, outline=None, width=0) def dashed_line(self, xy, fill=None, width=0, joint=None, dash_length=5, space_length=5): # Calculate the total length of the line From f410b84f8a5e8ba33e66a0868a728dcb6aeff083 Mon Sep 17 00:00:00 2001 From: Antoine Simoulin Date: Tue, 1 Jul 2025 06:59:22 -0700 Subject: [PATCH 2/2] add tests --- test/assets/fakedata/draw_rotated_boxes_fill.png | Bin 0 -> 3119 bytes test/test_utils.py | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 test/assets/fakedata/draw_rotated_boxes_fill.png diff --git a/test/assets/fakedata/draw_rotated_boxes_fill.png b/test/assets/fakedata/draw_rotated_boxes_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..474b771f04e12888c270c227c88a9d83dc980e1e GIT binary patch literal 3119 zcmd5<{Xf%t8{e!(tg(Y?)k2C+XH?%w+9ah1%02XOvmQ{{q*F4?NQI6(c8J_#GUe5M zr*jg{7M2dmR^dAj=Qxoz4~;|jYm7T($-({E*S-A#_fP%cm$%R7y586Iet)j(yL4ar z{-wq%jZrAnQZLUvhfpZ=N9~`H0YLUV_UuKWOs2f{>^c%#G}imKNV(YHy5EPRT|W{1 z_hvu#t4}%{HhF_67Jb7_bXVfdJioSozV{h3v2Jy3uLwFX|NG3b;1hJUMRmEVw!EssVBa=c zpkE6N!*VM}SozfC+!i>ZNo6$n0RM=yq*K&PP8|ZvTb)+v#ol6$hJja*#hIngco`t%<`y6t1JR`pS2p3! kHr>^A z%E?({^Ejfvwue+cG_(dD^xO=wO+Q{t_KR7;W7r)Sl-Dw`j)OzRl0naBJKZdyv5S%smiA|b1ALV2sFE5Usuv( z+RVQi*X%baWJWcl5r!!uTG6ZK*=QmDgpZ=#a^B^e4m*)7{k*CHg!C#>m{1x~4rZFu zA*8dZjQc3Y&PE6m8WFk4y(_6JZRVD1)}qJW3hrc$EqYA!WPGsx6Q!WH#3h083g3eN zxLfP38N9sO0X{Ud(cqEl%NIJ`fTR#Iv#PuL7fHrTOrJ2A4S;p9+EL)&p8~7 z>u_P0+JIAgkzlvT6n9uEs19J=HA4K{E|Q^Ik;C*TnL46KY;~HCev9~Aune@*n!U3H z!ZpbN zeNlC;FwR#X?lgpPqieOmtObvF*O6Vi3dAYWUekyIScw_P)9W-B(Ok7If8RXvbD1h3 zD4{R7i*uYe9do=ithRq={iUa~norOD`vb9w;_)eueF=`E^40lQEC(neoZuJPGh6BG z2~}9P^Y}`cdV-<{)&hV`nZW1)>H{ePA(^rm6q&3uSf3&6y^BW# zbLD^Ink#`Yu5<-4r$-Qr+=>S-U$ah)Yk@qR5mLYysBAOtOD5l@05Kf!L}C!aGW0Bq zdni3VACOuQkphg8BdzlXYA=ZR9P+Scj{{eK)|ot|GYMS-I) z%Bx>kZ8#9n%?Y2ZIq*imihO{~FCY(`&IUV@nb_EaigzRtjfgaE1o&z`jdnSNZ4y{oatQV&u(+4>3o#XFa*AI<(;oo7B=Cq|kms!3n5NGm%sm1(Hm^sJh2*ii z&cvpyRagGNObJ{7(wNwnHtNc3W{TqikjcbiZ4eD(C{H`x*j8Cg?Xu8{S`3o0m2PWc zoYWlI#6Ch<2gJ6@V`7E+Wj!dAtqzSTW#~xFbdV{p7_76mbVhNb!ZJ3GxKdxn8GaJj z>Wd3{!xjdd9gG_ya5qRGkHbhWCi9ut+%%fS8GZ=~i8`Il#GYR0Tdqv)v|ADP3c@T% z;BksaJZ7y15+tFJvn626y-ueERm$AQk!aelhdx4ACL~=m#o!EE4UND z!V6`-nL5&Ko5++7TXt#`zxOAlcH6(1oi)AK-w@sNaC1hSy!vgoyWwzLV0YEj(T^jX z-#$FNq1ygL@@r-yD2}f1vQ-U)6OGSmbEYN~ zDZH#z6JV9>XfJFGWf6@ZRDqllZjs{Oxn+`esi3Wi>e@*5AOhP9@!3(4rKWvbub-3( zy0%wJ%w>?p;miCSPHf>VnnNzf#ZwWMS>{1-`;dP+E5V@B=l%6VMT)R%7+T(X^$|N& z1eOc?z8TcWny6ss3yecZV3MC`72S_Oi*SElsnKR;7Ac-wE0esC3Zj~+M^5qHSxmY% zTz$6+_j5$#2w8}?oc@famyG)6>%{yDzaYQ5Pul;J(7a*ss-3L;0XAdchXBfJFMUt> I?%-?x1-mX-mH+?% literal 0 HcmV?d00001 diff --git a/test/test_utils.py b/test/test_utils.py index 000798a0609..8b6f357ce6e 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -177,6 +177,17 @@ def test_draw_rotated_boxes(): assert_equal(result, expected) +@pytest.mark.skipif(PILLOW_VERSION < (10, 1), reason="The reference image is only valid for PIL >= 10.1") +def test_draw_rotated_boxes_fill(): + img = torch.full((3, 500, 500), 255, dtype=torch.uint8) + colors = ["blue", "yellow", (0, 255, 0), "black"] + + result = utils.draw_bounding_boxes(img, rotated_boxes, colors=colors, fill=True) + path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "assets", "fakedata", "draw_rotated_boxes_fill.png") + expected = torch.as_tensor(np.array(Image.open(path))).permute(2, 0, 1) + assert_equal(result, expected) + + @pytest.mark.parametrize("fill", [True, False]) def test_draw_boxes_dtypes(fill): img_uint8 = torch.full((3, 100, 100), 255, dtype=torch.uint8)