分辨率设置为254dpi

// make_chessboard.cpp
#include <fcntl.h>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;// method from https://blog.csdn.net/shirly_xr/article/details/83792028
bool SetResolution(const char* path, int iResolution) {FILE* file = fopen(path, "rb+");  // - 打开图片文件if (!file) return false;//  int len = _filelength(_fileno(file));  // - 获取文件大小int len = ftell(file);char* buf = new char[len];fread(buf, sizeof(char), len, file);  // - 将图片数据读入缓存char* pResolution =(char*)&iResolution;  // - iResolution为要设置的分辨率的数值,如72dpibuf[0x0D] = 1;            // - 设置使用图片密度单位// - 水平密度,水平分辨率buf[0x0E] = pResolution[1];buf[0x0F] = pResolution[0];// - 垂直密度,垂直分辨率buf[0x10] = pResolution[1];buf[0x11] = pResolution[0];// - 将文件指针移动回到文件开头fseek(file, 0, SEEK_SET);// - 将数据写入文件,覆盖原始的数据,让修改生效fwrite(buf, sizeof(char), len, file);fclose(file);return true;
}int main() {//自定义标定板int blockSize_mm = 30;  // block边长,单位:mmint blockNum = 7;       // 行int blockNum_col = 7;   // 列int resolution_ratio = 10;int blockSize_pixel = blockSize_mm * resolution_ratio;int edge_size_pixel = blockSize_pixel / 2;int imageSize = blockSize_pixel * blockNum;int imageSize_col = blockSize_pixel * blockNum_col;cout << " imageSize = " << imageSize << endl;Mat chessBoard = cv::Mat::zeros(imageSize, imageSize_col, CV_8UC1);cout << "chessBoard.size() = " << chessBoard.size() << endl;for (int i = 0; i < imageSize_col; i = i + blockSize_pixel) {  // 列for (int j = 0; j < imageSize; j = j + blockSize_pixel) {Mat ROI = chessBoard(Rect(i, j, blockSize_pixel, blockSize_pixel));if (((i + j) / blockSize_pixel) % 2 == 0)ROI.setTo(Scalar::all(0));elseROI.setTo(Scalar::all(255));}}Mat chessBoard_final =cv::Mat::zeros((imageSize + blockSize_pixel),(imageSize_col + blockSize_pixel), CV_8UC1);chessBoard_final.setTo(Scalar::all(255));Rect chessBoard_rect =Rect(edge_size_pixel, edge_size_pixel, imageSize_col, imageSize);cout << "chessBoard_final.size() = " << chessBoard_final.size() << endl;// chessBoard_final(chessBoard_rect) = chessBoard;chessBoard.copyTo(chessBoard_final(chessBoard_rect));imshow("Chess board", chessBoard_final);imwrite("chessBoard.png", chessBoard_final);int iResolution = 254;  // 图像分辨率char path[20] = "./chessBoard.png";SetResolution(path, iResolution);waitKey(3000);return 0;
}

栗子 9*13 60mm:

制作棋盘格标定板(固定分辨率解决尺度问题)相关推荐

  1. 基于python的opencv相机标定(采用黑白棋盘格标定板)

    基于python的相机标定(采用黑白棋盘格图片) 系列文章目录 [第一章 基于python的相机标定(采用黑白棋盘格图片)](https://blog.csdn.net/HWHXXX/article/ ...

  2. matlab生成棋盘标定板,勇哥的视觉实验:棋盘格标定板标定

    勇哥手里这块标定板的参数如下: (一)使用GML Camera Calibration进行标定 新建任务后,发现这个软件不让行列数量相同. 必须行列一个为奇数一个就为偶数. 由于勇哥手里的标定板就是9 ...

  3. 利用OpenCv程序生成棋盘格标定板,并且实现像素单位与米制单位的转换

    /********************************************************************************************* 程序功能: ...

  4. MATLAB直接输出棋盘格标定板

    源代码如下,直接复制粘贴运行即可 %生成棋盘格 %by hunter %qq 770896174 %V1.0,2019-2-11 clear; clc; close all; format short ...

  5. 使用cad制作标定板(解决cad出图尺寸与实际不符问题)

    目录 1 背景 2 开始制作 2.1 单位与精度设置(cad尺寸与实际打印尺寸不符的最关键的问题) 2.2 绘制A4图框 2.3 打开栅格 2.4 绘制坐标系 2.5 绘制网格 2.6 绘制自己想要的 ...

  6. 棋盘格氧化铝标定板漫反射不反光12*9方格视觉光学校正板

    ■ 实验背景 为了进行 双轴机械臂 的运动精度测试,准备使用视觉定位的方式来测量机械臂终端机械位置.在机械臂终端固定 红色激光头 来测试机械手臂的位置.然后在通过 坐标纸 来标定激光点的位置. 为了提 ...

  7. matlab创建圆点标定板,Halcon标定板,网格标定板,机器视觉圆点标定板

    本产品介绍: 产品名称 产品型号 外形尺寸 (mm) 图形精度 (μm) 机器视觉 标定板 HBM03-2010-3Y 122*67*3 1 应用领域 宏诚光学玻璃系列标定板和陶瓷系列标定板是专为高校 ...

  8. 圆形标定板_一种圆阵列标定板特征点提取方法与流程

    本发明涉及一种圆阵列标定板特征点提取方法,属于摄像机标定技术领域. 背景技术: 摄像机标定的途径是根据摄像机模型,由已知特征点的图像坐标和世界坐标求解摄像机的模型参数,特征点提取的精度直接决定标定结果 ...

  9. 圆形标定板_基于圆形标定板特征点提取及排序的方法

    基于圆形标定板特征点提取及排序的方法 刘智 [摘 要] 摘要:在计算机视觉中 , 圆形标定板被广泛使用在像机标定中 , 本文针 对圆形标定板图像 ( 图 1) 在特征点提取后的排序问题 , 提出了利用 ...

最新文章

  1. package org.springframework.stereotype包不存在
  2. 医宗金鉴自学指南_自学《医宗金鉴》能学会中医吗?
  3. 页面显示 amp html6,浅谈HTML5 amp;amp; CSS3的新交互特性
  4. 互斥锁、自旋锁和自适应自旋锁
  5. LVS(8)——tcpdump查看数据包到底如何传递
  6. hdu-4451-Dressing
  7. 雷林鹏分享:XML 编码
  8. ffmpeg编译android,FFMPEG Android(2) 编译编译静态ffmpeg可执行文件
  9. vscode快捷键:多行同时输入
  10. 转化率高的爆款文案都是如何写出来的?
  11. 关于JavaScript中apply与call的用法意义及区别(转)
  12. 有限状态机 Finite State Machine(FSM)
  13. 超详细excel键盘快捷键大全
  14. 英语对程序员来讲有多重要?会英语的程序员和不会英语的程序员有什么差距?
  15. Android Studio制作一个简单的计算器APP
  16. 5不触发系统键盘_防盗报警系统基础知识汇总
  17. oracle的显示和隐式,oracle的显式受权和隐式授权(转)
  18. Photoshop制作banner步骤过程
  19. 9月第1周基金排行榜 | TokenInsight
  20. 哪款蓝牙耳机性价比最高?无线蓝牙耳机性价比排行榜

热门文章

  1. pmbok中文第六版(带目录)
  2. oracle home 自动检测,64位Oracle客户端上PLSQL无法识别ORACLE_HOME解决方案
  3. 不要让catalogs搞死你的eclipse
  4. 写了个魔兽争霸辅助工具
  5. ToDesk(远程协助软件)官方中文版V2.1.5 | todesk远程软件下载
  6. pink老师js869集笔记
  7. 华为p8刷linux系统,华为手机变身交通卡,公交地铁都能刷
  8. 云辅助隐私集合求交(Server-Aided PSI)协议介绍
  9. DMU软件 语法高亮 vim设置--学习笔记6
  10. scp传输文件 Permission denied, please try again