我已经开始学习Tensorflow了.我正在使用Pycharm,我的环境是Ubuntu 16.04.我正在按照教程.我交叉检查了一下.它是最新的.我不知道这个错误的原因.
来自numpy.lib.arraypad import _validate_lengths
ImportError:无法导入名称'_validate_lengths'
需要提示才能解决此错误.谢谢.
import tensorflow as tf
from skimage import transform
from skimage import data
import matplotlib.pyplot as plt
import os
import numpy as np
from skimage.color import rgb2gray
import random
#listdir: This method returns a list containing the names of the entries in the directory given by path.
# Return True if path is an existing directory
def load_data(data_dir):
# Get all subdirectories of data_dir. Each represents a label.
directories = [d for …Run Code Online (Sandbox Code Playgroud) 
我想删除此图像的背景以仅获取此人.我有这样的数千张图像,基本上是一个人和一些有点白色的背景.
我所做的是使用边缘检测器,如canny边缘检测器或sobel过滤器(来自skimage库).那么我认为可以做的是,使边缘内的像素变白并使像素变黑.之后,原始图像可以被掩盖以仅获取人物的图像.
然而,使用canny边缘检测器很难获得封闭边界.使用Sobel滤波器的结果并不差,但我不知道如何从那里开始.

编辑:
是否有可能去除右手和裙子之间以及头发之间的背景?
我正在使用skimage在python上构建代码.但是我在使用skimage.segmentation时遇到导入错误.
Traceback(最近一次调用最后一次):
文件"superpixel.py",第5行,in
来自skimage.segmentation import slic
ImportError:没有名为skimage.segmentation的模块
我正在加载带有scikit-image的TIF文件,并在ipython笔记本(2.2.0版)中内联显示.但是,这样可以在首次显示时图像非常小,当我使用图像右下角的可拖动手柄调整图像时,它只是重新调整图像,同时保留原始图像的分辨率,因此放大时图像非常模糊.这基本上就像ipython正在将我的图像转换为动态缩略图一样.
我也尝试过使用matplotlib plt.imshow(),它具有完全相同的结果.我正在用笔记本开始ipython notebook --pylab inline.
from skimage import io
import matplotlib.pyplot as plt
image_stack = io.MultiImage("my_image.tif")
image = image_stack[0] # it's a multi-page TIF, this gets the first image in the stack
io.imshow(image) # or plt.imshow(image)
io.show() # or plt.show()
Run Code Online (Sandbox Code Playgroud) 我试图找到一种方法来打破已经自适应阈值化的扫描文档中的文本行.现在,我存储文档为无符号的整数0到255的像素值,并且这是我在像素的平均值中的每一行,以及我基于像素值的平均值是否是线分割成的范围大于250,然后我取每个范围的线的中位数.但是,这种方法有时会失败,因为图像上可能会出现黑色斑点.
是否有更加抗噪的方式来完成这项任务?
编辑:这是一些代码."扭曲"是原始图像的名称,"剪切"是我想要分割图像的地方.
warped = threshold_adaptive(warped, 250, offset = 10)
warped = warped.astype("uint8") * 255
# get areas where we can split image on whitespace to make OCR more accurate
color_level = np.array([np.sum(line) / len(line) for line in warped])
cuts = []
i = 0
while(i < len(color_level)):
if color_level[i] > 250:
begin = i
while(color_level[i] > 250):
i += 1
cuts.append((i + begin)/2) # middle of the whitespace region
else:
i += 1
Run Code Online (Sandbox Code Playgroud)
简短版本:是否有用于显示图像的Python方法,该图像实时显示像素指数和强度?因此,当我将光标移到图像上时,我会不断更新显示,例如pixel[103,214] = 198(灰度)或pixel[103,214] = (138,24,211)rgb?
长版:
假设我打开一个保存为ndarray的灰度图像im并使用imshowmatplotlib 显示它:
im = plt.imread('image.png')
plt.imshow(im,cm.gray)
Run Code Online (Sandbox Code Playgroud)
我得到的是图像,在窗口框架的右下角,是像素索引的交互式显示.除了它们不完全,因为值不是整数:x=134.64 y=129.169例如.
如果我以正确的分辨率设置显示器:
plt.axis('equal')
Run Code Online (Sandbox Code Playgroud)
x和y值仍然不是整数.
在imshow从方法spectral包做一个更好的工作:
import spectral as spc
spc.imshow(im)
Run Code Online (Sandbox Code Playgroud)
然后在右下角我现在有了pixel=[103,152]例如.
但是,这些方法都没有显示像素值.所以我有两个问题:
imshowfrom matplotlib(和imshowfrom scikit-image)显示正确的(整数)像素索引吗?我试过这段代码:
import cv2
image = cv2.imread("sample.jpg")
pixel = image[200, 550]
print pixel
Run Code Online (Sandbox Code Playgroud)
但我得到的错误是:
'Nonetype'没有属性错误getitem
执行第三行代码后会显示此错误.
我想将一个scikit-image函数(特别是模板匹配函数match_template)应用于mp4视频帧的h264编码.我的应用程序跟踪每帧的时间非常重要,但我知道帧速率,因此我可以从帧编号轻松计算.
请注意我运行的资源很少,我希望尽可能保持依赖性:numpy无论如何都需要,因为我打算使用scikit-image,我会避免导入(和编译)openCV只是为了阅读视频.
我看到的底部这个页scikit-image可以seamleassly存储为处理视频numpy阵列,从而获得这将是理想的.
如何从Python cv2中的Internet URL读取图像?
import cv2.cv as cv
import urllib2
from cStringIO import StringIO
import PIL.Image as pil
url="some_url"
img_file = urllib2.urlopen(url)
im = StringIO(img_file.read())
Run Code Online (Sandbox Code Playgroud)
不好,因为Python向我报告:
TypeError: object.__new__(cStringIO.StringI) is not safe, use cStringIO.StringI.__new__
Run Code Online (Sandbox Code Playgroud) 当我尝试使用以下方法将图像转换为灰度时:
from skimage.io import imread
from skimage.color import rgb2gray
mountain_r = rgb2gray(imread(os.getcwd() + '/mountain.jpg'))
#Plot
import matplotlib.pyplot as plt
plt.figure(0)
plt.imshow(mountain_r)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我有一个奇怪的彩色图像而不是灰度.
手动实现该功能也给了我相同的结果.自定义功能是:
def rgb2grey(rgb):
if len(rgb.shape) is 3:
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
else:
print 'Current image is already in grayscale.'
return rgb
Run Code Online (Sandbox Code Playgroud)
为什么函数不能将图像转换为灰度?