OpenCV生成標定圖(棋盤格)
阿新 • • 發佈:2018-11-02
https://blog.csdn.net/eric_e/article/details/79570454
網上查了一下工業視覺標定板,少則幾百大洋,多則幾千大洋,就想在A4紙上山寨列印一個標定圖,就是黑白方格相間的那種。A4紙的標準大小為210*297mm。搞了個把小時,其實想明白了之後很簡單。從每個畫素的角度考慮,考慮其最終落入哪個小方塊,如果落入小方塊的行列之和為奇數,則設定為白色。可以作為簡單的上機面試題呀。首先準備一張跟A4紙比例相同的純黑圖片,3A4.bmp,可以用電腦自帶的畫圖生成。然後該設定為白的地方設定為白就行了。程式碼如下
[cpp]
- #include <opencv\cv.h>
- #include <opencv\highgui.h>
- #include <iostream>
- using namespace cv;
- using namespace std;
- int main()
- {
- Mat frame = imread("3A4.bmp"); // cols*rows = 630*891
- int nc = frame.channels();
- int nWidthOfROI = 90;
- for (int j=0;j<frame.rows;j++)
- {
- uchar* data= frame.ptr<uchar>(j);
- for(int i=0;i<frame.cols*nc;i+=nc)
- {
- if( (i/nc/nWidthOfROI + j/nWidthOfROI) % 2)
- {
- // bgr
- data[i/nc*nc + 0] = 255 ;
- data[i/nc*nc + 1] = 255 ;
- data[i/nc*nc + 2] = 255 ;
- }
- }
- }
- imshow("test",frame);
- waitKey(0);
- return 0;
- }
生成的圖形如下