Python+opencv绘制测试标版(棋盘格、纯色、十字叉心、灰度)+gamma曲线拟合

一、棋盘格

import cv2
import numpy as np

# 定义棋盘格的尺寸(单位、像素)
size = 30
# 定义标定板尺寸
#宽-尺寸*棋盘格个数
boardx = size * 12 
#长
boardy = size * 9

canvas = np.zeros((boardy, boardx, 1), np.uint8) # 创建画布
for i in range(0, boardx):
    for j in range(0, boardy):
        if (int(i/size) + int(j/size)) % 2 != 0: # 判定是否为奇数格
            canvas[j, i] = 255
cv2.imwrite("./chessboard.png", canvas)

绘制棋盘格示例如下:

二、纯色标版

# 2023.09.01

from PIL import Image

img = Image.new("RGB", (1920, 1080), (0, 0, 0))  # 1920*1080像素
img.save("black.png") #黑色:rgb(0,0,0)
#img.save("white.png") #白色:rgb(255,255,255)
#img.save("Red.png") #红色:rgb(255,0,0)
#img.save("Green.png") #绿色:rgb(0,255,0)
#img.save("Blue.png") #蓝色:rgb(0,0,255)

#青色:rgb(0,255,255)
#紫色:rgb(255,0,255)

纯蓝示例如下:

 三、十字叉心标版

import cv2

imgs = cv2.imread('.\shizichaxin\white.png')#1920*1080

#cv2.line(imgs, (起始坐标), (结束坐标), color=(255, 0, 0), thickness=边框线条大小)
cv2.line(imgs, (960,0),
              (960, 1080),
              (0, 0, 0), 1, 1)

cv2.line(imgs, (0,540),
              (1980, 540),
              (0, 0, 0), 1, 1)

cv2.imshow('img', imgs)
cv2.imwrite(".\shizichaxin\white.png", imgs)
cv2.waitKey(0)
cv2.destroyAllWindows()

十字叉心标版示例如下:

 


 四、灰度图标版

from PIL import Image
import os

# 设置图片尺寸
width = 640
height = 480

# 设置灰阶值列表
#gray_levels = list(range(256))#256张
gray_levels = [0,25,50,75,100,125,150,175,200,225,250]#特定灰度
# 创建保存图片的文件夹
save_dir = 'images'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)

# 遍历灰阶值列表,为每个灰阶值生成一张图片并保存到指定文件夹里
for level in gray_levels:
    img = Image.new('L', (width, height))
    for x in range(width):
        for y in range(height):
            pixels = img.load()
            pixels[x, y] = level
    img.save(os.path.join(save_dir, f'gray_level_{level}.bmp'))

 五、gamma曲线拟合

import sys
import numpy as np
import re
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt

#fit power function

x = [0,25,50,75,100,125,150,175,200,225,250]
#y = [0.036,1.12,4.84,10.71,19.288,28.845,42.421,57.191,75.955,92.662,108.26]
y = [0.09,1.84,7.31,15.169,26.336,37.802,53.672,70.167,89.719,106.19,122.71]
power_func = lambda x, a, b: a * np.power(x, b)
params, cov = curve_fit(power_func, x, y)

# plot circle
plt.plot(x, y, 'o', label='original data')
plt.plot(x, power_func(x, params[0], params[1]), label='fitted gamma')
plt.legend()
plt.savefig( "gamma_inmo_right.png", dpi=300)
print(np.round(params[1], 3))

gamma曲线拟合示例如下:

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值