输入图片
import cv2
import numpy as np
image = cv2. imread( '/home/lhh/桌面/66.jpg' )
输入标定参数
cameraMatrix= np. array( [ [ 2395.43780183150 , 0 , 0 ] ,
[ 0 , 2393.94194463920 , 0 ] ,
[ 1616.85477544911 , 1247.98647787308 , 1 ] ] , dtype= np. float )
distCoeffs= np. array( [ 0.116859976786568 , - 0.237374745910244 , 0 , 0 , 0 ] , dtype= np. float )
rvec= np. array( [ [ 1 , 0 , 0 ] ,
[ 0 , 1 , 0 ] ,
[ 0 , 0 , 1 ] ] , dtype= np. float )
tvec= np. array( [ 0 , 0 , 0 ] , dtype= np. float )
输入测试点并调用函数
objectPoints = np. array( [ 400 , 0 , 1400 ] , dtype= np. float )
k, j= cv2. projectPoints( objectPoints, rvec, tvec, cameraMatrix, distCoeffs)
将输出的二维坐标进行变换
u= np. reshape( k, 2 )
u= np. asarray( u, dtype= int )
x= image. shape[ 1 ] / 2
y= image. shape[ 0 ] / 2
x= int ( x)
y= int ( y)
u= np. add( [ u[ 0 ] , u[ 1 ] ] , [ x, - y] )
u= [ u[ 0 ] , - u[ 1 ] ]
u= tuple ( u)
将点映射到图片上
for i in range ( 30 ) :
cv2. circle( image, u, i, ( 0 , 0 , 225 ) )
cv2. imshow( "image" , image)
cv2. waitKey( 0 )
cv2. destroyAllWindows( )
cv2. imwrite( '/home/lhh/桌面/picture2.jpg' , image)