本文由 @lonelyrains 出品,转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/46874723
网上查了一下工业视觉标定板,少则几百大洋,多则几千大洋,就想在A4纸上山寨打印一个标定图,就是黑白方格相间的那种。A4纸的标准大小为210*297mm。搞了个把小时,其实想明白了之后很简单。从每个像素的角度考虑,考虑其最终落入哪个小方块,如果落入小方块的行列之和为奇数,则设置为白色。 可以作为简单的上机面试题呀。首先准备一张跟A4纸比例相同的纯黑图片,3A4.bmp,可以用电脑自带的画图生成。然后该设置为白的地方设置为白就行了。代码如下
-
#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;
-
}
</div>