相关疑难解决方法(0)

使用OpenCV自动调整一张纸的彩色照片的对比度和亮度

拍摄一张纸时(例如,使用电话摄像头),我得到以下结果(左图)(jpg 在此处下载)。所需的结果(使用图像编辑软件手动处理)在右侧:

我想用openCV处理原始图像,以自动获得更好的亮度/对比度(以使背景更白)

假设:图像具有A4纵向格式(在本主题中,我们无需对其进行透视变形),并且纸页为白色,可能带有黑色或彩色的文本/图像。

到目前为止,我已经尝试过:

  1. 各种自适应阈值方法,例如高斯,OTSU(请参阅OpenCV doc 图像阈值)。通常可以与OTSU配合使用:

    ret, gray = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)
    
    Run Code Online (Sandbox Code Playgroud)

    但仅适用于灰度图像,不适用于彩色图像。此外,输出是二进制(白色或黑色),我不希望这样:我更喜欢保留彩色非二进制图像作为输出

  2. 直方图均衡

    • 应用于Y(在RGB => YUV变换之后)
    • 或应用于V(在RGB => HSV变换之后),

    如本建议答案直方图均衡化不是彩色图像的工作- OpenCV的)或该一个OpenCV的Python的equalizeHist彩色图像):

    img3 = cv2.imread(f)
    img_transf = cv2.cvtColor(img3, cv2.COLOR_BGR2YUV)
    img_transf[:,:,0] = cv2.equalizeHist(img_transf[:,:,0])
    img4 = cv2.cvtColor(img_transf, cv2.COLOR_YUV2BGR)
    cv2.imwrite('test.jpg', img4)
    
    Run Code Online (Sandbox Code Playgroud)

    或使用HSV:

    img_transf = cv2.cvtColor(img3, cv2.COLOR_BGR2HSV)
    img_transf[:,:,2] = cv2.equalizeHist(img_transf[:,:,2])
    img4 = cv2.cvtColor(img_transf, cv2.COLOR_HSV2BGR)
    
    Run Code Online (Sandbox Code Playgroud)

    不幸的是,结果非常糟糕,因为它会在本地创建可怕的微对比度(?):

    我还尝试了YCbCr,这很相似。

  3. 我还尝试了CLAHE(对比度受限的自适应直方图均衡化),范围tileGridSize从 …

python opencv image-processing computer-vision image-thresholding

40
推荐指数
5
解决办法
3094
查看次数

如何使用python + OpenCV快速更改图像亮度?

我有一系列的图像.我需要平均这些图像的亮度.

第一个例子(非常慢):

img = cv2.imread('test.jpg') #load rgb image
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) #convert it to hsv

for x in range(0, len(hsv)):
    for y in range(0, len(hsv[0])):
        hsv[x, y][2] += value

img = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imwrite("image_processed.jpg", img)
Run Code Online (Sandbox Code Playgroud)

第二个例子(快速)

hsv += value
Run Code Online (Sandbox Code Playgroud)

这个例子非常快但它改变了所有值HSV(我只需改变V(亮度))

python opencv numpy image-processing

14
推荐指数
5
解决办法
5万
查看次数

在python(cv2)中使用OpenCV增加彩色图像对比度的最快方法是什么?

我正在使用OpenCV处理一些图像,我需要执行的第一步是增加彩色图像上的图像对比度.到目前为止我发现的最快的方法是使用这个代码(其中np是numpy导入)来乘以原始的基于C的cv1文档中的建议:

    if (self.array_alpha is None):
        self.array_alpha = np.array([1.25])
        self.array_beta = np.array([-100.0])

    # add a beta value to every pixel 
    cv2.add(new_img, self.array_beta, new_img)                    

    # multiply every pixel value by alpha
    cv2.multiply(new_img, self.array_alpha, new_img)  
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法在Python中执行此操作?我尝试使用numpy的标量乘法,但性能实际上更糟.我也尝试过使用cv2.convertScaleAbs (OpenCV docs建议使用convertTo,但cv2似乎缺少这个函数的接口)但是再次测试的性能更差.

python opencv numpy contrast

11
推荐指数
2
解决办法
4万
查看次数

如何自动调整颜色和对比度

在我的项目中,我想实现一个模块,自动添加或删除给定图片的对比度.我的问题是,找出我可以添加或删除多少对比度.我知道photoshops自动对比度/自动颜色功能.有人可以解释一下它的工作原理或理论/论文/想法如何实现这一点?

我知道,有一个直方图均衡功能.但那并不是我想要的功能.

例如,我想选择这三个与图像匹配的渐变曲线中的一个.

图片由ImageShack.us 主持http://img94.imageshack.us/img94/2656/grad2f.jpg 图片由ImageShack.us主持http://img819.imageshack.us/img819/9956/grad1j.jpg ImageShack 主持的图片.us http://img507.imageshack.us/img507/8176/grad0.jpg

问候

algorithm opencv image-processing computer-vision

8
推荐指数
1
解决办法
1万
查看次数

如何使用 opencv python 调整亮度、对比度和振动?

我是图像处理的新手。我用Python3编程,使用OpenCV图像处理库。我想调整以下属性。

  1. 亮度
  2. 对比
  3. 活力
  4. 色调
  5. 饱和
  6. 亮度

对于 4、5、6。我使用以下代码转换为 HSV 空间。

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)
h += value # 4
s += value # 5
v += value # 6
final_hsv = cv2.merge((h, s, v))
img = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)
Run Code Online (Sandbox Code Playgroud)

我为 1 和 2 找到的唯一教程是这里。本教程使用 C++,但我使用 Python 编程。另外,我不知道如何调整 3. 振动。我非常感谢您的帮助,谢谢!

python opencv brightness contrast

4
推荐指数
1
解决办法
2万
查看次数

如何提高 EasyOCR 的准确性/预测?

我正在尝试从车牌中获取字符。但很少有错误的预测,比如

在此输入图像描述

我得到的输出为UP74 BD 3465,这是错误的。有许多B预测的例子8以及更多。

  • 如何提高其准确率?
  • 如何预处理图像以获得正确的预测或任何其他方法?
import matplotlib.pyplot as plt
import easyocr
from pylab import rcParams
from IPython.display import Image

rcParams['figure.figsize'] = 8, 16
reader = easyocr.Reader(['en'])

output = reader.readtext(path)
for i in range(len(output)):
    print(output[i][-2])
Run Code Online (Sandbox Code Playgroud)

python ocr text-extraction image-processing easyocr

2
推荐指数
1
解决办法
9531
查看次数

图像水平调整算法

我需要在C ++算法中实现用于调整图像级别的功能,该功能类似于Photoshop或GIMP中的“级别”功能。即输入是:要调整的彩色RGB图像,点,黑点,中间点,从/到值的输出。但是我还没有找到有关如何执行此调整的任何信息。可能有人向我推荐算法描述或要学习的材料。

到目前为止,我自己想出了以下代码,但是它并没有给出预期的结果,类似于我在GIMP中看到的那样,图像变得太亮。以下是我当前的代码片段:

const int normalBlackPoint = 0;
const int normalMidtonePoint = 127;
const int normalWhitePoint = 255;
const double normalLowRange = normalMidtonePoint - normalBlackPoint + 1;
const double normalHighRange = normalWhitePoint - normalMidtonePoint;

int blackPoint = 53;
int midtonePoint = 110;
int whitePoint = 168;
int outputFrom = 0;
int outputTo = 255;

double outputRange = outputTo - outputFrom + 1;
double lowRange = midtonePoint - blackPoint + 1;
double highRange = whitePoint - midtonePoint;
double fullRange = whitePoint …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm image-processing

0
推荐指数
1
解决办法
2074
查看次数