网上查了一下工业视觉标定板,少则几百大洋,多则几千大洋,就想在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; }
生成的图形如下
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-10 12:03:37