OPENCV创建标定板的几种方法

来源:互联网 发布:战斗吧剑灵刻印数据 编辑:程序博客网 时间:2024/06/05 11:39

opencv通用加载库文件包括

#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;


1、先初始化创建一个空图像,然后根据一个简单算法逐个像素去遍历赋值。

void CreateCalibration()
{
Size ImageSize = Size(960, 1260);
Mat src(ImageSize.width,ImageSize.height,CV_8UC1,Scalar(0));
namedWindow("src", CV_WINDOW_NORMAL);
imshow("src", src);

int width = 140;
int height = 140;
for (int i = 0; i < src.rows; i++)
{
for (int j = 0; j < src.cols; j++)
{
if ((i / width + j / height)%2 != 0)
{
src.at<uchar>(i, j) = 255;
}
else
{
src.at<uchar>(i, j) = 0;
}
}
}
namedWindow("result", CV_WINDOW_NORMAL);
imshow("result", src);
imwrite("result.bmp", src);
waitKey(0);
return;

}



 

2、通过IPLimage指针的方式 

void CreateCalibrationipl()
{
IplImage *src1;
src1 = cvCreateImage(Size(960, 1260), IPL_DEPTH_8U, 1); 
namedWindow("src", CV_WINDOW_NORMAL);
cvShowImage("src", src1);
int width1 = 140;
int height1 = 140;

for (int i = 0; i < src1->height; i++)
{
for (int j = 0; j < src1->width; j++)
{
if ((i / width1 + j / height1)%2 != 0)
{
((uchar *)(src1->imageData + i*src1->widthStep))[j] = 255;
}
else
{
((uchar *)(src1->imageData + i*src1->widthStep))[j] = 0;
}
}
}
cvShowImage("src1", src1);
cvSaveImage("result_ipl.bmp", src1);
waitKey(0);
return;
}



0 0
原创粉丝点击