Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 42 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save IAmSuyogJadhav/305bfd9a0605a4c096383408bee7fd5c to your computer and use it in GitHub Desktop.
Save IAmSuyogJadhav/305bfd9a0605a4c096383408bee7fd5c to your computer and use it in GitHub Desktop.
Add transparency to rectangles, circles, polgons, text or any shape drawn in OpenCV.
import cv2
image = cv2.imread('test.jpg')
overlay = image.copy()
x, y, w, h = 10, 10, 10, 10 # Rectangle parameters
cv2.rectangle(overlay, (x, y), (x+w, y+h), (0, 200, 0), -1) # A filled rectangle
alpha = 0.4 # Transparency factor.
# Following line overlays transparent rectangle over the image
image_new = cv2.addWeighted(overlay, alpha, image, 1 - alpha, 0)
@shivaraj1994
Copy link

Thanks a lot man

@michelpf
Copy link

Great!

@ahmadabdulnasir
Copy link

Thanks alot

@hamza-ghadyali
Copy link

thanks

@kpandu
Copy link

kpandu commented Apr 20, 2020

Thanks

@JBisc
Copy link

JBisc commented Apr 30, 2020

Thanks!

@ArashCh
Copy link

ArashCh commented Aug 26, 2020

Nice work...Thanks!

@davidgikas
Copy link

How can two rectangles have different transparency?

@IAmSuyogJadhav
Copy link
Author

IAmSuyogJadhav commented Aug 27, 2020

How can two rectangles have different transparency?

@davidgikas,
One way I think that can be done is to just go on doing this same process iteratively.
Add the first rectangle using the above script, and then just create the second rectangle and add to image_new with your desired alpha using cv2.addWeighted.

@davidgikas
Copy link

Thank you, i did this in a for statement and it worked!

@lidorshimoni
Copy link

Thanks a lot!
is there a more efficient way of doing this? since copying a large image is computationally heavy when I want to draw it many times a second

@manaspalaparthi
Copy link

i think open cv should implement this inside rectangle function as a parameter of transparency

@IAmSuyogJadhav
Copy link
Author

i think open cv should implement this inside rectangle function as a parameter of transparency

Yup. Completely agree. This should be a straightforward thing yet we have to do it in a roundabout way currently.

@omegaBionic
Copy link

Thanks :)

@TalhaUsuf
Copy link

Man ! at last i found a simple solution. Lots of thanks. Allah bless you

@anibalsolon
Copy link

Cheers!

@baotruyenthach
Copy link

This method works!

@Anshir08
Copy link

Nice & Thanks

@jonathan-cartica
Copy link

very good very nice!

@idangrady
Copy link

Appreciated!!

@joabnd7
Copy link

joabnd7 commented Dec 18, 2022

Legend!

@Jay4BioPZ
Copy link

You are a hero :)

@WildePizza
Copy link

Thank you so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment