Put Greyscale Images into one List - (Error: (-215) scn == 3 || scn == 4 in function ipp_cvtColor)
Put Greyscale Images into one List - (Error: (-215) scn == 3 || scn == 4 in function ipp_cvtColor)
我想将文件夹中的每张图片读取到一个列表中,然后对每张图片进行灰度化。所有灰度图像也应该在一个列表中。目前,我可以将图像读取到一个列表中,但我无法将所有灰度图像放入一个列表中。
这是我的代码:
import cv2
import numpy as np
from os import listdir
from os.path import isfile, join
mypath = 'jpl_thomas'
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath,f)) ]
images = np.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
images[n] =cv2.imread(join(mypath,onlyfiles[n]))
frames = np.zeros(len(images))
for i in range(0, len(images)):
frames[i] = cv2.cvtColor(images[i],cv2.COLOR_BGR2GRAY)
我得到的错误如下:
File "main.python", line 21, in <module>
frames[i] = cv2.cvtColor(images[i],cv2.COLOR_BGR2GRAY)
cv2.error: /Users/jenkins/miniconda/1/x64/conda-bld/conda_1486588158526/work/opencv-3.1.0/modules/imgproc/src/color.cpp:7456:
error: (-215) scn == 3 || scn == 4 in function ipp_cvtColor
我尝试调试小部件。
frames[0] = cv2.cvtColor(images[0],cv2.COLOR_BGR2GRAY)
returns 正确的值。但是如果我使用for循环,就会出现上面的错误。
以下代码读取mypath
中的所有彩色图像文件,同时将它们转换为灰度图像。 color_images[]
和 gray_images[]
是两个 list
保存彩色和灰色图像。
from os import listdir
from os.path import isfile, join
import numpy as np
import cv2
mypath = './imageFiles/'
onlyfiles = [fname for fname in listdir(mypath) if isfile(join(mypath,fname))]
color_images = np.empty(len(onlyfiles), dtype=object)
gray_images = np.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
color_images[n] =cv2.imread(join(mypath,onlyfiles[n]))
gray_images[n] =cv2.imread(join(mypath,onlyfiles[n]),0)
# plot images in list[] for checking
for i in range(len(color_images)):
plt.figure(i)
plt.subplot(121), plt.imshow(color_images[i][:,:,::-1]), plt.title('color')
plt.subplot(122), plt.imshow(gray_images[i], cmap='gray'), plt.title('grayscale')
plt.show()
下面的示例图是放入_images[]
的图像文件,其中包括著名的"Lena"和"Scenetext" 个图片文件在 mypath
.
下
注意,OpenCV
:
- 彩色图像在
numpy
中存储为 (height[0:n], width[0:m], channels[B,G,R])
和
- 灰度图只有一个通道
(height[0:n], width[:0:m])
。
cv2.imread(filename[,flags])
将彩色图像转换为灰度图像,如果
flags
设置为 0
。有关更多标志,请参阅“read an image”。
希望对您有所帮助。
我想将文件夹中的每张图片读取到一个列表中,然后对每张图片进行灰度化。所有灰度图像也应该在一个列表中。目前,我可以将图像读取到一个列表中,但我无法将所有灰度图像放入一个列表中。
这是我的代码:
import cv2
import numpy as np
from os import listdir
from os.path import isfile, join
mypath = 'jpl_thomas'
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath,f)) ]
images = np.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
images[n] =cv2.imread(join(mypath,onlyfiles[n]))
frames = np.zeros(len(images))
for i in range(0, len(images)):
frames[i] = cv2.cvtColor(images[i],cv2.COLOR_BGR2GRAY)
我得到的错误如下:
File "main.python", line 21, in <module>
frames[i] = cv2.cvtColor(images[i],cv2.COLOR_BGR2GRAY)
cv2.error: /Users/jenkins/miniconda/1/x64/conda-bld/conda_1486588158526/work/opencv-3.1.0/modules/imgproc/src/color.cpp:7456:
error: (-215) scn == 3 || scn == 4 in function ipp_cvtColor
我尝试调试小部件。
frames[0] = cv2.cvtColor(images[0],cv2.COLOR_BGR2GRAY)
returns 正确的值。但是如果我使用for循环,就会出现上面的错误。
以下代码读取mypath
中的所有彩色图像文件,同时将它们转换为灰度图像。 color_images[]
和 gray_images[]
是两个 list
保存彩色和灰色图像。
from os import listdir
from os.path import isfile, join
import numpy as np
import cv2
mypath = './imageFiles/'
onlyfiles = [fname for fname in listdir(mypath) if isfile(join(mypath,fname))]
color_images = np.empty(len(onlyfiles), dtype=object)
gray_images = np.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
color_images[n] =cv2.imread(join(mypath,onlyfiles[n]))
gray_images[n] =cv2.imread(join(mypath,onlyfiles[n]),0)
# plot images in list[] for checking
for i in range(len(color_images)):
plt.figure(i)
plt.subplot(121), plt.imshow(color_images[i][:,:,::-1]), plt.title('color')
plt.subplot(122), plt.imshow(gray_images[i], cmap='gray'), plt.title('grayscale')
plt.show()
下面的示例图是放入_images[]
的图像文件,其中包括著名的"Lena"和"Scenetext" 个图片文件在 mypath
.
注意,OpenCV
:
- 彩色图像在
numpy
中存储为(height[0:n], width[0:m], channels[B,G,R])
和 - 灰度图只有一个通道
(height[0:n], width[:0:m])
。 cv2.imread(filename[,flags])
将彩色图像转换为灰度图像,如果flags
设置为0
。有关更多标志,请参阅“read an image”。
希望对您有所帮助。