OpenCV生成标定图

人走茶凉 提交于 2019-12-03 07:12:41

本文由 @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;
}


生成的图形如下



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!