opencv2-3生成标定用的方格图

opencv2-3生成标定用的方格图

就想在A4纸上山寨打印一个标定图,就是黑白方格相间的那种。A4纸的标准大小为210*297mm。从每个像素的角度考虑,考虑其最终落入哪个小方块,如果落入小方块的行列之和为奇数,则设置为白色。首先准备一张跟A4纸比例相同的纯黑图片,可以用电脑自带的画图生成。然后该设置为白的地方设置为白就行了。

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Scalar s(0);
Mat frame(630,891,CV_8UC1,s);
//Mat frame = imread("1.jpg"); // cols*rows = 630*891
int nc = frame.channels();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: OpenCV是一个广泛使用的计算机视觉库,它提供了许多函数和工具来处理和分析像。如果想要在OpenCV中画网格,可以按照以下步骤进行: 1. 导入OpenCV库和其他所需的库。 ```python import cv2 import numpy as np ``` 2. 创建一个像对象,并指定网格的大小和颜色。 ```python image = np.zeros((500, 500, 3), dtype=np.uint8) # 创建一个500x500大小的黑色像 grid_color = (255, 255, 255) # 网格的颜色,这里设为白色 ``` 3. 定义网格的行数和列数,并计算每个网格之间的间隔。 ```python num_rows = 10 # 网格的行数 num_cols = 10 # 网格的列数 row_spacing = image.shape[0] // num_rows # 每个网格之间的行间距 col_spacing = image.shape[1] // num_cols # 每个网格之间的列间距 ``` 4. 画出水平和垂直的网格线。 ```python for i in range(1, num_rows): cv2.line(image, (0, i * row_spacing), (image.shape[1], i * row_spacing), grid_color, 1) # 画水平线 for i in range(1, num_cols): cv2.line(image, (i * col_spacing, 0), (i * col_spacing, image.shape[0]), grid_color, 1) # 画垂直线 ``` 5. 显示网格像。 ```python cv2.imshow("Grid Image", image) cv2.waitKey(0) # 等待按下任意键关闭窗口 cv2.destroyAllWindows() ``` 这样就能够在OpenCV中画出网格了。通过调整行数和列数,可以创建不同大小和密度的网格。同时也可以更改网格线的颜色和粗细,以满足不同需求。 ### 回答2: 要在Opencv中画网格,可以按照以下步骤进行操作: 1. 导入Opencv库:首先需要导入Opencv库,通过import cv2语句来实现。 2. 创建一个画布:使用cv2模块中的函数cv2.imread()创建一个空白的画布,指定画布的宽度和高度。 3. 定义网格参数:定义网格的行数和列数,可以根据需要进行调整。 4. 绘制网格:使用for循环嵌套来遍历每个网格的位置,然后使用cv2.rectangle()函数来绘制矩形。 5. 显示像:使用cv2.imshow()函数来显示像,cv2.waitKey()函数等待按键输入,cv2.destroyAllWindows()关闭像窗口。 以下是一个示例代码: ``` import cv2 # 创建一个空白的画布 canvas = cv2.imread("image.png") # 根据需要设置画布的宽度和高度 # 定义网格参数 rows = 10 # 行数 cols = 10 # 列数 # 绘制网格 for i in range(rows): for j in range(cols): x = i * (canvas.shape[1] // cols) # 计算矩形的左上角坐标 y = j * (canvas.shape[0] // rows) x1 = x + (canvas.shape[1] // cols) # 计算矩形的右下角坐标 y1 = y + (canvas.shape[0] // rows) cv2.rectangle(canvas, (x, y), (x1, y1), (0, 0, 255), 1) # 绘制矩形 # 显示像 cv2.imshow("Grid Image", canvas) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上代码会在指定的画布上绘制一个10行10列的网格,并显示出来。你可以根据需要调整画布的大小和网格的行列数。 ### 回答3: 使用OpenCV画网格可以通过以下步骤实现: 1. 导入OpenCV库: ``` import cv2 ``` 2. 创建一个画布: ``` image = numpy.zeros((height, width, 3), dtype=numpy.uint8) ``` 这里的`height`和`width`分别是画布的高度和宽度。 3. 定义网格线的颜色: ``` grid_color = (255, 255, 255) # 白色 ``` 4. 画竖直网格线: ``` # 以固定间隔画竖直线 for x in range(0, width, grid_interval): cv2.line(image, (x, 0), (x, height), grid_color, 1) ``` 这里的`grid_interval`表示网格线之间的间隔。 5. 画水平网格线: ``` # 以固定间隔画水平线 for y in range(0, height, grid_interval): cv2.line(image, (0, y), (width, y), grid_color, 1) ``` 6. 显示画布: ``` cv2.imshow("Grid", image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这里使用`imshow`显示画布,`waitKey`等待键盘输入,`destroyAllWindows`关闭像窗口。 这样就可以通过OpenCV画出大小为`height`x`width`的网格了。调整`height`、`width`和`grid_interval`的值可以改变网格的大小和密度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值