OpenCV生成标定图(棋盘格)

https://blog.csdn.net/eric_e/article/details/79570454

网上查了一下工业视觉标定板,少则几百大洋,多则几千大洋,就想在A4纸上山寨打印一个标定图,就是黑白方格相间的那种。A4纸的标准大小为210*297mm。搞了个把小时,其实想明白了之后很简单。从每个像素的角度考虑,考虑其最终落入哪个小方块,如果落入小方块的行列之和为奇数,则设置为白色。可以作为简单的上机面试题呀。首先准备一张跟A4纸比例相同的纯黑图片,3A4.bmp,可以用电脑自带的画图生成。然后该设置为白的地方设置为白就行了。代码如下

[cpp] view plain copy

  1. #include <opencv\cv.h>  
  2. #include <opencv\highgui.h>  
  3.   
  4. #include <iostream>  
  5.   
  6. using namespace cv;  
  7. using namespace std;  
  8.   
  9. int main()  
  10. {  
  11.     Mat frame = imread("3A4.bmp"); // cols*rows = 630*891  
  12.   
  13.     int nc = frame.channels();  
  14.       
  15.     int nWidthOfROI = 90;  
  16.   
  17.     for (int j=0;j<frame.rows;j++)  
  18.     {  
  19.         uchar* data= frame.ptr<uchar>(j);  
  20.         for(int i=0;i<frame.cols*nc;i+=nc)  
  21.         {             
  22.             if( (i/nc/nWidthOfROI + j/nWidthOfROI) % 2)  
  23.             {  
  24.                 // bgr  
  25.                 data[i/nc*nc + 0] = 255 ;  
  26.                 data[i/nc*nc + 1] = 255 ;  
  27.                 data[i/nc*nc + 2] = 255 ;                 
  28.             }  
  29.         }  
  30.     }  
  31.   
  32.     imshow("test",frame);  
  33.     waitKey(0);  
  34.   
  35.     return 0;  
  36. }  

生成的图形如下

猜你喜欢

转载自blog.csdn.net/chengde6896383/article/details/83505126