You may or may not need to cast. Casting is just a way of verifying that what you are communicating with is what you think it is. It’s like picking up the phone and calling your friend Billy, when somebody answers the phone and says “hello”, you first ask if this is Billy your speaking to. If yes then now you know you can now call on functions and variables that Billy owns.
So I’m not sure because I would need to see how your blueprints are setup, It may or may not be difficult to get that reference efficiently. It would be easier if you could possible move this image changing logic to the blueprint that creates the widget.
If not, you will need to get a reference to the blueprint that created the widget. Worst case is you may have to do a get all actors of class, this will give you that reference, or maybe a line trace hit, or overlap event is needed.
Depending on how your blueprints are setup you may have a built in function to do this, for instance if the actor is a player, and you need a reference to the player controller you could use the event on possessed, or function “Get Controller”.
My point is that you need some way to get a reference so you can open up communication between these blueprints.
These are foundational things you are going to need to learn to do, and I highly recommend checking out this video by Epics Zak Parrish, it is one of the best tutorials on blueprint communication I have ever seen:
Hope all this information helps! :)