日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab标定投影误差,opencv 角点检测+相机标定+去畸变+重投影误差计算

發布時間:2023/12/16 循环神经网络 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab标定投影误差,opencv 角点检测+相机标定+去畸变+重投影误差计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/u010128736/article/details/52875137

https://blog.csdn.net/h532600610/article/details/51800488

python 角點檢測+相機標定+去畸變+重投影誤差計算:

#coding:utf-8

importcv2importnumpy as npimportglob#找棋盤格角點#閾值

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)#棋盤格模板規格

w = 9h= 6

#世界坐標系中的棋盤格點,例如(0,0,0), (1,0,0), (2,0,0) ....,(8,5,0),去掉Z坐標,記為二維矩陣

objp = np.zeros((w*h,3), np.float32)

objp[:,:2] = np.mgrid[0:w,0:h].T.reshape(-1,2)#儲存棋盤格角點的世界坐標和圖像坐標對

objpoints = [] #在世界坐標系中的三維點

imgpoints = [] #在圖像平面的二維點

images= glob.glob('calib/*.png')for fname inimages:

img=cv2.imread(fname)

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#找到棋盤格角點

ret, corners =cv2.findChessboardCorners(gray, (w,h),None)#如果找到足夠點對,將其存儲起來

if ret ==True:

cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)

objpoints.append(objp)

imgpoints.append(corners)#將角點在圖像上顯示

cv2.drawChessboardCorners(img, (w,h), corners, ret)

cv2.imshow('findCorners',img)

cv2.waitKey(1)

cv2.destroyAllWindows()#標定

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)#去畸變

img2 = cv2.imread('calib/00169.png')

h, w= img2.shape[:2]

newcameramtx, roi=cv2.getOptimalNewCameraMatrix(mtx,dist,(w,h),0,(w,h)) #自由比例參數

dst =cv2.undistort(img2, mtx, dist, None, newcameramtx)#根據前面ROI區域裁剪圖片#x,y,w,h = roi#dst = dst[y:y+h, x:x+w]

cv2.imwrite('calibresult.png',dst)#反投影誤差

total_error =0for i inxrange(len(objpoints)):

imgpoints2, _=cv2.projectPoints(objpoints[i], rvecs[i], tvecs[i], mtx, dist)

error= cv2.norm(imgpoints[i],imgpoints2, cv2.NORM_L2)/len(imgpoints2)

total_error+=errorprint "total error:", total_error/len(objpoints)

標定 cv2.calibrateCamera函數文檔:https://docs.opencv.org/2.4.1/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html

c++ 角點檢測+角點繪制:

#include #include#include#include

using namespacestd;intmain( )

{

cout<

IplImage* imgRGB =cvLoadImage(filename);

IplImage* imgGrey =cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);if (imgGrey==NULL){//image validation

cout<< "No valid image input."<

}//-------find chessboard corners--------------

int corner_row=7;//interior number of row corners.(this can be countered by fingers.)

int corner_col=7;//interior number of column corners.

int corner_n=corner_row*corner_col;

CvSize pattern_size=cvSize(corner_row,corner_col);//CvPoint2D32f* corners=new CvPoint2D32f[corner_n];

CvPoint2D32f corners[49];intcorner_count;int found=cvFindChessboardCorners(//returning non-zero means sucess.

imgGrey,//8-bit single channel greyscale image.

pattern_size,//how many INTERIOR corners in each row and column of the chessboard.

corners,//an array where the corner locations can be recorded.

&corner_count,//optional, if non-NULL, its a point to an integer where the nuber of corners found can be recorded.//CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS//check page 382-383.

0);

cout<

cvDrawChessboardCorners(

imgRGB,

pattern_size,

corners,

corner_count,

found

);

cvSaveImage(filename2,imgRGB);//to summary a bit of findings.

cout<

cout<

cout<

cvNamedWindow("Find and Draw ChessBoard", 0);

cvShowImage("Find and Draw ChessBoard", imgRGB );

cvWaitKey(0);

cvReleaseImage(&imgGrey);

cvReleaseImage(&imgRGB);

cvDestroyWindow("Find and Draw ChessBoard");return 0;

}

注意事項:

pattern_size參數傳遞內點數,8*8的棋盤只有7*7內點。

圖像選取應注意減少干擾,例如光照與背景等。

Corners中的角點坐標順序排列規律不一定是以行從左上到右下。使用坐標計算映射關系時應提高警惕,對坐標進行重新排列。

關鍵函數參數說明:

int cvFindChessboardCorners( const void* image, CvSize pattern_size, CvPoint2D32f* corners, int* corner_count=NULL, int flags=CV_CALIB_CB_ADAPTIVE_THRESH );

Image:

輸入的棋盤圖,必須是8位的灰度或者彩色圖像。

pattern_size:

棋盤圖中每行和每列角點的個數。

Corners:

檢測到的角點

corner_count:

輸出,角點的個數。如果不是NULL,函數將檢測到的角點的個數存儲于此變量。

Flags:

各種操作標志,可以是0或者下面值的組合:

CV_CALIB_CB_ADAPTIVE_THRESH -使用自適應閾值(通過平均圖像亮度計算得到)將圖像轉換為黑白圖,而不是一個固定的閾值。

CV_CALIB_CB_NORMALIZE_IMAGE -在利用固定閾值或者自適應的閾值進行二值化之前,先使用cvNormalizeHist來均衡化圖像亮度。

CV_CALIB_CB_FILTER_QUADS -使用其他的準則(如輪廓面積,周長,方形形狀)來去除在輪廓檢測階段檢測到的錯誤方塊。

總結

以上是生活随笔為你收集整理的matlab标定投影误差,opencv 角点检测+相机标定+去畸变+重投影误差计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人在线免费观看视频 | 91一区二区三区在线观看 | 色屋永久| 非洲黄色大片 | 一区二区成人免费视频 | 清冷男神被c的合不拢腿男男 | 午夜免费观看视频 | 狠狠躁18三区二区一区视频 | 四虎一级片 | 少妇熟女一区二区三区 | 激情综合视频 | 欧美成人精品二区三区99精品 | 三上悠亚中文字幕在线播放 | 日本一区二区在线免费观看 | 高清国产一区二区三区四区五区 | 欧美激情成人在线 | 日韩在线一区视频 | hd丰满圆润的女人hd | 三级免费网址 | 麻豆视频入口 | 在线免费黄 | 人成免费在线视频 | 七月丁香婷婷 | 精品亚洲综合 | 欧美一级专区 | 国产精品一区二区三区四区在线观看 | 日韩av网址在线观看 | 欧美在线精品一区 | 懂色aⅴ国产一区二区三区 亚洲欧美国产另类 | 色偷偷伊人 | av超碰在线观看 | 午夜影院91 | 国产黄色录相 | 影音先锋中文字幕一区二区 | 9191av| 牛牛av在线 | 有码av在线 | 国产成人福利视频 | 日批视频免费在线观看 | 国产裸体视频网站 | 在线观看特色大片免费网站 | 日本天堂在线观看 | 精品视频99 | 天堂av网址 | 久久影院视频 | 国产精品三级久久久久久电影 | 日本一区二区三区免费视频 | 色撸撸av | 91精品人妻一区二区三区 | 国产一区二区三区高清 | 奇米777狠狠 | 亚洲小说区图片区 | 色综合中文字幕 | 免费精品无码AV片在线观看黄 | 国产精品探花一区二区在线观看 | 欧美激情一区二区 | 最新高清无码专区 | 在线的av| 欧美激情一区二区三区四区 | 日本h漫在线观看 | 欧美日韩a级 | 久草高清 | www.亚洲精品 | 亚洲福利天堂 | 黄色综合网站 | 日韩精品在线播放 | 亚洲成人网页 | 国产黄色视屏 | 成人在线免费视频观看 | 91色国产 | 18禁肉肉无遮挡无码网站 | 久久艹艹 | 黄色一区二区视频 | 麻豆视频免费看 | 精品国产三级片在线观看 | 91精品久久久久久久久久久 | av网天堂 | 91精品国产综合久久福利软件 | 日操夜操天天操 | 久久久国产精品一区二区三区 | 我我色综合 | 国产21区 | 狠狠精品干练久久久无码中文字幕 | www三级| 婷婷色婷婷开心五月四房播播 | 国产高潮流白浆喷水视频 | 国模大尺度自拍 | 国产精品麻豆果冻传媒在线播放 | 九九色网 | 四虎精品在线 | 三度诱惑免费版电影在线观看 | 国产成人精品无码免费看夜聊软件 | 国产精品无 | 日本xxxxxxxxx69| av午夜激情 | 高清亚洲 | 日本黄色天堂 | 欧美性猛交xxxⅹ富婆 | 国产成人精品亚洲 |