相关疑难解决方法(0)

如何从PIL图像创建OpenCV图像?

我想用OpenCV(在Python中)进行一些图像处理,但我必须从一个PIL Image对象开始,所以我不能使用该cvLoadImage()调用,因为它需要一个文件名.

这个食谱(改编自http://opencv.willowgarage.com/wiki/PythonInterface)不起作用,因为cvSetData抱怨argument 2 of type 'void *'.有任何想法吗?

from opencv.cv import *
from PIL import Image

pi = Image.open('foo.png')                       # PIL image
ci = cvCreateImage(pi.size, IPL_DEPTH_8U, 1)     # OpenCV image
data = pi.tostring()
cvSetData(ci, data, len(data)) 
Run Code Online (Sandbox Code Playgroud)

我认为最后一个论点cvSetData也是错误的,但我不确定它应该是什么.

python opencv image-processing python-imaging-library

12
推荐指数
1
解决办法
2万
查看次数

如何从图像中裁剪或删除白色背景

我试图使用OpenCV和Python比较图像.

考虑这些图像:


图像900 x 726


图像900 x 675


两者都有一双相同的鞋子,设置为白色背景.唯一的区别是第一个背景比第二个背景更高.

我想知道如何以编程方式裁剪两者的白色背景,以便我只剩下这双鞋.

我必须补充一点,我不可能手动裁剪背景.

python opencv python-imaging-library scikit-image

7
推荐指数
1
解决办法
7946
查看次数

如何使用opencv(python)从url读取gif

我可以使用cv2读取jpg文件

import cv2
import numpy as np
import urllib
url = r'http://www.mywebsite.com/abc.jpg'
req = urllib.request.urlopen(url)
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
img = cv2.imdecode(arr,-1)
cv2.imshow('abc',img)
Run Code Online (Sandbox Code Playgroud)

但是,当我使用gif文件时,它会返回一个错误:

error: (-215) size.width>0 && size.height>0 in function cv::imshow
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题呢?

python opencv

6
推荐指数
1
解决办法
7033
查看次数

在opencv中加载svg图像

我正在尝试下载 svg 图像并在opencv中打开它以进行进一步处理。我正在做的是使用cairosvg从 svg 转换为 png 格式,使用Pillow打开它,最后转换为opencv. 这里的问题是转换后的图像opencv看起来与格式中的图像不完全相同PIL

from io import BytesIO
import numpy as np
import requests
from PIL import Image
from cairosvg import svg2png
import cv2

svg_url = 'https://logincdn.msauth.net/16.000.28611.4/content/images/microsoft_logo_ee5c8d9fb6248c938fd0dc19370e90bd.svg'

# Get svg data
svg_data = requests.get(svg_url).content

# Convert from svg to png
png = svg2png(bytestring=svg_data)

# Open png in PIL
pil_img = Image.open(BytesIO(png))
pil_img.show()  # This looks good

# Convert to opencv
cv_img = np.array(pil_img.convert('RGB'))[:, :, …
Run Code Online (Sandbox Code Playgroud)

python svg opencv image-processing computer-vision

5
推荐指数
1
解决办法
1万
查看次数

灰度 PIL 图像转 OpenCV 格式

我发现之前的答案与 RGB 图像的更一般转换相关:Convert image from PIL to openCV format

我想知道图像必须以灰度格式读取时的区别。

images = [None, None]

images[0] = Image.open('image1')
images[1] = Image.open('image2')

print(type(images[0]))

a = np.array(images[0])
b = np.array(images[1])

print(type(a))

im_template = cv2.imread(a, 0)
im_source = cv2.imread(b, 0)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

<class 'PIL.JpegImagePlugin.JpegImageFile'>
<class 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)

尽管我能够将图像转换为 ndarray,但 cv2 说:“内置操作的参数类型错误”。我不需要 RGB 到 BGR 转换。在传递 cv2 读取参数时我还应该考虑什么?

python opencv python-3.x

3
推荐指数
1
解决办法
9810
查看次数