我试图找到一种将图像拆分为定义的部分的方法,以便对每个部分应用直方图均衡化。 必须重新组合这些部分以形成先前的图像,并在应用直方图均衡化的情况下进行显示。
void insert(typename T::value_type&& element);
答案 0 :(得分:1)
既然您已经找到了如何对图像进行直方图均衡的方法,那么剩下的问题就是先分割原始图像,然后再合并碎片。
OpenCV非常好,它为您提供了感兴趣区域(ROI)的概念,它是图像的一部分(定义为矩形)。出于所有实际目的,ROI可以用作图像,但是如果您对其进行修改,原始图像也将被修改。
因此,您必须提取您感兴趣的所有ROI,并对它们应用直方图均衡化。由于ROI是图像本身的一部分,因此隐式处理合并。
答案 1 :(得分:0)
尝试一下:
import cv2
import numpy as np
img = cv2.imread("1.jpg")
(h,w,c) = img.shape
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
parts = []
step_x = 3
step_y = 3
eqs = []
eq_img = np.zeros_like(gray_img)
for x in range(step_x):
for y in range(step_y):
xratio1 = x/step_x
xratio2 = (x+1)/step_x
yratio1 = y/step_y
yratio2 = (y+1)/step_y
part = gray_img[int(yratio1*h):int(yratio2*h),int(xratio1*w):int(xratio2*w)].copy()
parts.append(part)
cv2.imshow("x = {0}, y = {1}".format(x,y),part)
eq = cv2.equalizeHist(part)
eqs.append(eq)
eq_img[int(yratio1*h):int(yratio2*h),int(xratio1*w):int(xratio2*w)] = eq
cv2.imshow("eq_img",eq_img)
cv2.waitKey(0)