VC编程:opencv标定图片生成程序
小标 2018-08-14 来源 : 阅读 818 评论 0

摘要:本文主要向大家介绍了VC编程:opencv标定图片生成程序,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程:opencv标定图片生成程序,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

之前看到有人需要openCV标定的黑白棋盘。我之前也是看了一点opencv,自己写了一个生成黑白棋盘图片的小程序。
是在vc6.0+openCV1.0环境下生成的。
下面是源代码:

/*******************************************************************************
*此程序用来自制一个标定用的测试方格
*******************************************************************************/
#include 
#include 

int blockSide; //方格的边长
int count = 1; //图像个数

int calculate(void);

int main()
{
while (1)
{
calculate();
/*
if (calculate())
{
break;
}
*/
}
system("pause");

return 0;
}

int calculate(void)
{
int m, n;
int i, j;
int flag = 0;
char ch = '\0';
char str[11] = {'t', 'e', 'x', 't'}; //图像名称
IplImage *img = NULL;
unsigned char *data = NULL; //指向图像矩阵首地址的指针
unsigned char *temp = NULL;
unsigned char *dstPoint = NULL;
//指向要操作的元素

m = n = j = i = 0;

printf("请输入方格的边长:\n");
scanf("%d", &blockSide);
printf("请输入标定块的行和列:\n");
scanf("%d%d", &m, &n);

img = cvCreateImage(
cvSize(blockSide*n, blockSide*m),
IPL_DEPTH_8U,
1
);
data = (unsigned char *)img->imageData;

for (i = 0; i < n; i++)
{
for ( j = 0; j < m; j++)
{

flag = i + j;
/*
if (i == m-1 || j == n-1)
{
flag*/
temp = data + img->widthStep * blockSide * j + blockSide * i;
if ( flag % 2)
{
for (int k = 0; k < blockSide; k++)
{
for ( int k1 = 0; k1 < blockSide; k1++)
{
dstPoint = temp + k1 * img->widthStep + k;
*dstPoint = 255;
}
}
}
else
{
for (int k = 0; k < blockSide; k++)
{
for ( int k1 = 0; k1 < blockSide; k1++)
{
dstPoint = temp + k1 * img->widthStep + k;
*dstPoint = 0;
}
}
}
dstPoint = NULL; //重新置零
}
}

cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);//创建一个窗口
cvShowImage("Image", img);//显示图片
cvWaitKey(0);

getchar();

printf("是否保存图像?(按q退出):");
scanf("%c", &ch);
if (ch == 'q' || ch == 'Q')
{
exit(0);
}
else if (ch == 'Y' || ch == 'y')
{
str[4] = count / 10 + '0';
str[5] = count++ % 10 + '0';

cvSaveImage(strcat(str, ".jpg"), img);
printf("图片保存为当前工作目录下的%s\n", str);
return 1;
}
else
{
return 0;
}
//cvDestroyWindow("Image"); //销毁窗口
}


程序运行如下:
首先要输入要设置的每个黑白方格的像素大小,接着输入行数和列数。回车就会弹出窗口显示生成的图片。
关闭窗口,回到命令提示符下保存图片到当前工作目录。
可以连续生成多张不同的黑白棋盘图片。
以下是程序的免费下载地址:https://download.csdn.net/detail/lp310018931/6673547    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程