图片中有比色卡,通过比色卡进行全图颜色校准

2 篇文章 0 订阅
1 篇文章 0 订阅

今天下午接到学长的消息,说学长的学长要弄这个东西,我尝试做,用时比较久,大部分时间用于读懂到底要干什么啊,从结果来看,本次实验还算成功的,下文介绍代码实现。(第一次发啥也不懂,先试个水,下次发opencv的学习过程)

图片中RGB三个通道不好处理,换成灰度图就只有一个灰度值,做运算都更加容易,所以处理图像的颜色用灰度图更为实用。

本文旨在介绍图片中已经包含了比色卡,通过opencv对比色卡在图片中实际的RGB以及灰度值进行全图的RGB及灰度的修正。

 从上往下分别是:原图,修正后的图,比色卡

以下是代码过程:

1.导入库

import cv2
import numpy as np

2.获取比色卡的平均灰度值

# 将图片转化为灰度图
image = cv2.imread("D:/1.jpg",cv2.IMREAD_GRAYSCALE)

# 检查图片是否正确加载
if image is None:
    print("Error: Could not load image.")
    exit()

# 定位比色卡的鸟瞰图
height, width = image.shape
pts1 = np.float32([[100,300],[150,300],[100,400],[150,400]])
pts2 = np.float32([[0,0],[width,0],[0,height],[width,height]])
matrix = cv2.getPerspectiveTransform(pts1,pts2)
imgOutput = cv2.warpPerspective(image,matrix,(width,height))

# 计算图像中所有像素值的和
pixel_sum = np.sum(image)
# 计算图像的总像素数
num_pixels = image.shape[0] * image.shape[1]
#计算比色卡的平均灰度
gray = pixel_sum / num_pixels
#打印比色卡的平均灰度
print(gray)

其中,pts1是以左上,右上,左下,右下取的点,点的坐标信息可以在“画图”工具中通过移动鼠标至顶点读取左下角的像素坐标获得。

3.对原图进行处理,并打印原图,处理后的图,比色卡(原图中比色卡标准为128)

# 读取彩色图像
image = cv2.imread("D:/1.jpg")

# 打印原始图像的形状
print("Original Image Shape:", image.shape)

# 得到原图与比色卡在灰度上的差值
add = 128-gray

# 加法操作,确保结果在0-255的范围内
image_adjusted = np.clip(image + add, 0, 255).astype(np.uint8)
# image_adjusted = cv2.cvtColor(image_adjusted,cv2.COLOR_BGR2GRAY)#将彩图转成灰度图,如果不需要,注释掉就好了

# 打印调整后的图像的形状
print("Adjusted Image Shape:", image_adjusted.shape)

# 显示原始图像和调整后的图像(可选)
cv2.imshow("normal",imgOutput)
cv2.imshow('Original Image', image)
cv2.imshow('RGB', image_adjusted)

cv2.imwrite(output_path, image_adjusted)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上就是做了挺久的一个程序,时间太久了使得原本说有报酬的也没了,不过当做一次练习还是比较记忆深刻,希望能够给看到的网友提供帮助,并激励我继续向前学习。共勉。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值