[英]OpenCV: error: (-215:Assertion failed) _src.type() == CV_8UC1 in function 'cv::equalizeHist'
[英]Still after convertion into grayscale can not use cv.equalizeHist() in OpenCV. Gives error: (-215:Assertion failed) _src.type() == CV_8UC1
我正在尝试使用cv.equaliazeHist()
function 但它给了我这样的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)
无论如何,以下代码对我有用,既可以转换为灰度,也可以直接以灰度读取:
import cv2
file_name = '/path/to/my/picture.jpg'
# Read original image
img = cv2.imread(file_name)
gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # Convert to grayscale
# Equalize and show
eq_img = cv2.equalizeHist(gray_img)
cv2.imshow('equalized', eq_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
### Read on grayscale + equalize + show ###
img = cv2.imread(file_name, 0)
eq_img=cv2.equalizeHist(img)
cv2.imshow('equalized', eq_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
(我使用的是 openCV 3.2.0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.