我试图使用cv.equaliazeHist()
函数,但它给了我这样一个错误
error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\histogram.cpp:3439: error: (-215:Assertion failed) _src.type() == CV_8UC1 in function 'cv::equalizeHist'
在尝试使用cv.equaliazeHist()
之前,我还将图像转换为灰度。仍然得到这个错误。但如果我在读取灰度图像时使用cv.IMREAD_GRAYSCALE
,代码运行良好,尽管我的图像已经是灰度图像
import glob
import cv2 as cv
import matplotlib.pyplot as plt
import os
import numpy as np
images=[cv.imread(file) for file in sorted(glob.glob(r"C:\Users\USER\Handcrafted dataset\raw/*.jpg"))]
for img in images:
b,g,r = cv.split(img)
rgb_img = cv.merge([r,g,b])
plt.figure(figsize=(5,5))
plt.imshow(rgb_img)
转换为灰度:
di=r"C:\Users\USER\Handcrafted dataset\gray_scale"
for i,img in enumerate(images):
b,g,r = cv.split(img)
rgb_img = cv.merge([r,g,b])
gray_img = cv.cvtColor(rgb_img,cv.COLOR_RGB2GRAY)
plt.figure(figsize=(5,5))
print(i)
plt.imshow(gray_img,cmap='gray')
cv.imwrite(di+"\\"+ "%06d.jpg" % i,gray_img.astype(np.uint8))
试图平衡:
images2=[cv.imread(file) for file in sorted(glob.glob(r"C:\Users\USER\Handcrafted dataset\gray_scale/*.jpg"))]
dir2=r"C:\Users\USER\Handcrafted dataset\adaptive"
for i,img in enumerate(images2):
ad_img=cv.equalizeHist(img)
plt.figure(figsize=(5,5))
plt.imshow(ad_img,cmap='gray')
cv.imwrite(dir2+"\\"+ "%06d.jpg" % i,ad_img.astype(np.uint8)) #adaptibe histogram
您的最后一块代码不应该工作,因为您正在读取图像(rgb)并尝试在不转换为灰度的情况下进行均衡,
cv2.equalizeHist
需要一个通道在任何情况下,您都可以通过阅读以下图片跳过“转换为灰度”步骤:
img = cv2.imread(file_name, 0)
无论如何,下面的代码对我很有用,既可以转换为灰度,也可以直接读取灰度:
(我正在使用openCV 3.2.0)
相关问题 更多 >
编程相关推荐