I think you would use rather this simpler rules set in /seo-images/.htaccess, we rewrite only if %{REQUEST_FILENAME} is neither a file nor a directory, not the inverse:
RewriteEngine On
#RewriteBase /seo-images/
# match all numbers upto - then get the extension after .
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^-]+)-.*\.([[:alnum:]]+)$ /uploads/$1.$2 [L]
Without redirect, we use only an internal rewrite, Google will always think about mywebsite.com/seo-images/123-some-description.jpg instead of mywebsite.com/uploads/123.jpg .
Or you prefer absolutely rewriting:
RewriteEngine On
#RewriteBase /seo-images/
# match all numbers upto - then get the extension after .
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^-]+)-.*\.([[:alnum:]]+)$ /uploads/$1.$2 [R=301,L]
It does this:
/seo-images/123-some-description.jpg => /uploads/123.jpg
/seo-images/t123-foo-bar.png => /uploads/t123.png