我有一个macbook pro安装了virtualbox,安装了anaconda(来自https://www.continuum.io),并安装了openCV(conda install -c menpo opencv)
执行python:
python
Python 2.7.14 |Anaconda, Inc.| (default, Dec 7 2017, 17:05:42)
[GCC 7.2.0] on linux2
Run Code Online (Sandbox Code Playgroud)
并尝试导入openCV:
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0: undefined symbol: g_log_structured_standard
Run Code Online (Sandbox Code Playgroud)
我搜索了这个错误,但没有多少关于这个的条目,我找到的那些都没有解决.
我甚至不明白什么是错误,所以不知道如何解决它.
我已经在其他系统中多次安装Anaconda和opencv而没有任何问题.
不知道如何解决这个错误?
我在Ubuntu,python 2.7.使用OpenCV.
我试图准确理解cv2.connectedComponents正在做什么.这是图像:
代码:
import cv2
import numpy as np
img = cv2.imread('BN.tif', 0)
img = np.uint8(img)
_, markers = cv2.connectedComponents(img)
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这个功能创建了一个与提供的图像大小相同的数组.对于检测到的每个组件,为该组件的所有(y,x)位置分配相同的编号.如果背景全部为"0",那么圆圈将全部为"1",下一个方格全部为"2",等等.最后一个组件应为全"19".我通过获取定义组件的最高数字来读取组件的数量:
np.amax(markers)
Run Code Online (Sandbox Code Playgroud)
我应该得到19,但我得到1.
我的问题:为什么我只得到一个组件?
我知道有许多有关如何安装OpenCV-Python的主题。我遍历了很多,他们帮助我解决了在Ubuntu上安装openCV-python的一些问题
我设法安装了openCV,但无法正常工作。当我尝试运行时:
import numpy
import cv2
img= cv2.imread('image.png',0)
cv2.imshow('image',img)
Run Code Online (Sandbox Code Playgroud)
我得到一个错误
错误:/io/opencv/modules/highui/src/window.cpp:583:错误:(-2)功能未实现。在Windows,GTK + 2.x或Carbon支持下重建了库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config,然后重新运行cmake或在函数cvSowImage中配置脚本
我怎么做?我怀疑我应该重复cmake并以某种方式在其上包括这两个库,但是如何?
编辑2017年3月19日, 我遵循以下指示:
和
http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
来自:
http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html
每当我的脚本包括(我从IDLE运行)时:
cv2.imshow('image',img)
我收到了相同的错误消息:
Traceback (most recent call last):
File "/home/dcanals/Documents/test.py", line 5, in <module>
cv2.imshow('image',img)
error: /io/opencv/modules/highgui/src/window.cpp:583: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage
Run Code Online (Sandbox Code Playgroud)
我不明白发生了什么。我只是想让openCV开始学习此软件包。我安装了libgtk2和pkg-config。我按照说明进行操作。为什么不起作用?我现在应该怎么做才能使python-openCV工作呢?谢谢
编辑2017年3月21日
我编辑这篇文章是因为我认为我在以下地方找到了非常重要的文档:https …
我正在尝试获取带有误差条的 3D 条形图。我愿意使用 matplotlib、seaborn 或任何其他 python 库或工具
在 SO 中搜索,我发现 3D 条形图可以通过绘制几个 2D 图(例如此处)来完成。这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
dades01 = [54,43,24,104,32,63,57,14,32,12]
dades02 = [35,23,14,54,24,33,43,55,23,11]
dades03 = [12,65,24,32,13,54,23,32,12,43]
df_3d = pd.DataFrame([dades01, dades02, dades03]).transpose()
colors = ['r','b','g','y','b','p']
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
z= list(df_3d)
for n, i in enumerate(df_3d):
print 'n',n
xs = np.arange(len(df_3d[i]))
ys = [i for i in df_3d[i]]
zs = z[n]
cs = …Run Code Online (Sandbox Code Playgroud) 我将 png 图像导出到 python numpy 数组。
import numpy
import Image
import matplotlib.pyplot as plt
Im=Image.opne('file.png')
arr=numpy.array(Im).reshape(Im.size[1],Im.size[0],4)
plt.imshow(arr)
plt.show()
Run Code Online (Sandbox Code Playgroud)
现在,在书中,我发现使用 3 个通道重塑 png,这对我不起作用。我不得不使用 4。
>>> Im.shape
(401, 601, 4)
Run Code Online (Sandbox Code Playgroud)
我可以想象红色通道:
ImR=Im[:,:,0]
Run Code Online (Sandbox Code Playgroud)
绿色和蓝色类似。最后一个给我一个白屏。
我设法删除它:
Im4=Im[:,:,:-1]
Run Code Online (Sandbox Code Playgroud)
现在:
>>> Im4.shape
(401, 601, 3)
Run Code Online (Sandbox Code Playgroud)
我可以像在删除第 4 列之前一样将图像可视化
我的问题是:PNG 中的第 4 列是什么?
在上一个问题中,我询问如何使用 opencv (BGR 格式)更改上传到 numpy.array 的图像的颜色。目标是将任何小于 255 的红色通道值转换为 255。
如果满足条件,如何优化更改 3d numpy.array 的值
最好的答案是:
img[img[:, :, 2] < 255] = 255
Run Code Online (Sandbox Code Playgroud)
关键是我不明白发生了什么(这是一个不同的问题,因为前一个问题得到了完美的回答)。我理解这部分:
img[:, :, 2] < 255
Run Code Online (Sandbox Code Playgroud)
正在对红色通道上的 y、x 像素进行切片并与 255 值进行比较。
但是,我不明白为什么它嵌入到另一个数组中:
img[...] = 255
Run Code Online (Sandbox Code Playgroud)
这必须读成类似:if (img[:, :, 2] < 255) then make this Pixel-red Channel=255但我不知道如何读取代码行以使其听起来像这样。
谁能非常清楚地解释一下这段代码行,以便我可以修改用于其他目的?写的时候应该怎样读呢?
我正在学习如何使用子图。例如:
import numpy
import matplotlib.pyplot as plt
plt.figure(1)
plt.subplot(221)
plt.subplot(222)
plt.subplot(223)
plt.show()
plt.close(1)
Run Code Online (Sandbox Code Playgroud)
我在图 1 中得到 3 个子图
现在我想用第一个中的其他子图制作一个大的子图。我试过:
plt.figure(1)
plt.subplot(111)
plt.subplot(222)
plt.subplot(223)
Run Code Online (Sandbox Code Playgroud)
但是第一个子情节消失了。
我的问题:是否可以重叠子图?
谢谢你
我已经在 Ubuntu 16.04 上安装了 virtualenv 和 virtualenvwrapper 我创建了一个名为 env1 的环境
$ sudo apt-get install python-pip
$ pip install virtualenv
$ pip install --upgrade pip
$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME
$ source /usr/local/bin/virtualenvwrapper.sh
$ mkvirtualenv env1
Run Code Online (Sandbox Code Playgroud)
进入 (env1) 后,我已经安装了几个软件包
(env1) $ pip install numpy
(env1) $ pip install scipy
(env1) $ pip install matplotlib
(env1) $ apt-get install python-tk
Run Code Online (Sandbox Code Playgroud)
我还安装了opencv3(我没有复制如何安装,因为太长了)
我正在将 env1 用于特定项目。
现在我想使用相同的包启动另一个项目,但我还想添加其他包。
我已经创建了 env2,我想知道是否可以将 env1 复制到 env2,而不需要从头开始重新安装所有内容。