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

我想用openCV处理原始图像,以自动获得更好的亮度/对比度(以使背景更白)。
假设:图像具有A4纵向格式(在本主题中,我们无需对其进行透视变形),并且纸页为白色,可能带有黑色或彩色的文本/图像。
到目前为止,我已经尝试过:
各种自适应阈值方法,例如高斯,OTSU(请参阅OpenCV doc 图像阈值)。通常可以与OTSU配合使用:
ret, gray = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)
Run Code Online (Sandbox Code Playgroud)
但仅适用于灰度图像,不适用于彩色图像。此外,输出是二进制(白色或黑色),我不希望这样:我更喜欢保留彩色非二进制图像作为输出
如本建议答案(直方图均衡化不是彩色图像的工作- 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,这很相似。
我还尝试了CLAHE(对比度受限的自适应直方图均衡化),范围tileGridSize从 …
python opencv image-processing computer-vision image-thresholding
我有一系列的图像.我需要平均这些图像的亮度.
第一个例子(非常慢):
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(亮度))
我正在使用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似乎缺少这个函数的接口)但是再次测试的性能更差.
在我的项目中,我想实现一个模块,自动添加或删除给定图片的对比度.我的问题是,找出我可以添加或删除多少对比度.我知道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
问候
我是图像处理的新手。我用Python3编程,使用OpenCV图像处理库。我想调整以下属性。
对于 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. 振动。我非常感谢您的帮助,谢谢!
我正在尝试从车牌中获取字符。但很少有错误的预测,比如
我得到的输出为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) 我需要在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)