小编use*_*339的帖子

如何在OpenCV(Python)中将灰度图像转换为RGB,以便在处理二进制图像后可视化轮廓?

我正在学习使用OpenCV进行实时应用程序的图像处理.我对图像进行了一些阈值处理,并希望将轮廓标记为绿色,但它们不会显示为绿色,因为我的图像是黑白的.

在程序的早期我使用了gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)从RGB转换为灰度,但要回去我很困惑,函数backtorgb = cv2.cvtColor(gray,cv2.CV_GRAY2RGB)给出了AttributeError:'module'对象没有属性'CV_GRAY2RGB'.

下面的代码似乎没有以绿色绘制轮廓 - 这是因为它是灰度图像吗?如果是这样,我可以将灰度图像转换回RGB以使绿色轮廓可视化吗?

import numpy as np
import cv2
import time

cap = cv2.VideoCapture(0)
while(cap.isOpened()):

    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    ret, gb = cv2.threshold(gray,128,255,cv2.THRESH_BINARY)

    gb = cv2.bitwise_not(gb)

    contour,hier = cv2.findContours(gb,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)

    for cnt in contour:
        cv2.drawContours(gb,[cnt],0,255,-1)
    gray = cv2.bitwise_not(gb)

    cv2.drawContours(gray,contour,-1,(0,255,0),3)

    cv2.imshow('test', gray)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing

55
推荐指数
4
解决办法
16万
查看次数

如何将matplotlib图的输出作为SVG?

我需要获取matplotlib图的输出并将其转换为我可以在激光切割机上使用的SVG路径.

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,100,0.00001)
y = x*np.sin(2*pi*x)
plt.plot(y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

例如,下面您会看到一个波形.我希望能够将此波形输出或保存为SVG路径,以后我可以在Adobe Illustrator等程序中使用该路径.

我知道一个名为"Cairo"的SVG库,matplotlib可以使用(matplotlib.use('Cairo')),但是我不清楚这会让我访问我需要的SVG路径,即使matplotlib现在将使用Cairo来生成绘图.

在此输入图像描述

我确实有cairo在我的系统上工作,并且可以成功绘制一个由SVG路径组成的示例,我确实可以在Illustrator中编辑它,但是我没有办法将上面的等式转换为SVG路径.

import cairo
from cairo import SVGSurface, Context, Matrix    
s = SVGSurface('example1.svg', WIDTH, HEIGHT)
c = Context(s)

# Transform to normal cartesian coordinate system
m = Matrix(yy=-1, y0=HEIGHT)
c.transform(m)

# Set a background color
c.save()
c.set_source_rgb(0.3, 0.3, 1.0)
c.paint()
c.restore()

# Draw some lines
c.move_to(0, 0)
c.line_to(2 * 72, 2* 72)
c.line_to(3 * 72, 1 * 72)
c.line_to(4 …
Run Code Online (Sandbox Code Playgroud)

python svg interpolation matplotlib cairo

48
推荐指数
2
解决办法
7万
查看次数

MATLAB中的高通滤波

有谁知道如何在MATLAB中使用过滤器?我不是一个爱好者,所以我不关心滚降特性等 - 我有一个100维采样的1维信号矢量,我想对它进行高通滤波(比如拒绝任何低于10Hz的信号) )去除基线漂移.

帮助中描述了Butterworth,Elliptical和Chebychev过滤器,但没有关于如何实现的简单解释.

matlab signal-processing filter digital-filter

25
推荐指数
2
解决办法
6万
查看次数

错误:不推荐使用homebrew/science.我该怎么办?

当我尝试以下时出现以下错误brew tap homebrew/science:"错误:自制软件/科学已被弃用.此漏洞现在为空,因为其所有公式都已迁移." 但是,没有明确说明该怎么做.它的所有公式都迁移到了____?

我不是科学新手,但我对自制新手很新.

我该怎么办?.我打算用它来跟踪安装公式opencv等等.我不明白为什么类似的东西homebrew/science会被折旧或不再相关.

homebrew

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

在用户选择文件后,什么可能导致Tkinter/Python中的打开文件对话框窗口真的很慢关闭?

我可以在我的程序中执行以下操作以获得一个简单的打开文件对话框并打印所选的文件路径.不幸的是,当用户选择文件时,它不会马上消失,并且会停留超过5分钟. 在执行更多python代码之前,如何在选择之后立即使窗口消失?在Tkinter代码之后,我尝试使用OpenCV导入一些视频,我认为这可能会导致速度变慢.我的OpenCV代码确实正确执行,我不认为单独存在问题(即某些交互导致错误并且可能在Tkinter包装其GUI对话框之前启动了一些密集的进程).

import Tkinter as Tk
import cv2
from tkFileDialog import askopenfilename
root = Tk.Tk()
root.withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)

cap = cv2.VideoCapture('video.mp4')   # this works just fine 
Run Code Online (Sandbox Code Playgroud)

如果有用,我使用的是Python 2.7和Mac OS X 10.9.

[编辑:这对所有人来说似乎不是问题,但它适合我,所以我正在改变问题,也包括调试问题.在Tkinter打开文件对话框窗口关闭GUI之前,我不希望执行任何操作.似乎我的程序中的后续步骤(一个开放的简历视频导入)可能以某种方式导致Tkinter减慢速度,所以我想确保它在任何新进程启动之前关闭.再次,Tkinter窗口确实在5分钟后关闭...]

python macos tkinter python-3.x

11
推荐指数
1
解决办法
6251
查看次数

使用seaborn,我如何在我的散点图中画出我选择的一行?

我希望能够在seaborn中生成的情节中画出我的规格线.我选择的情节是JointGrid,但任何散点图都可以.我怀疑seaborn可能不容易做到这一点?

以下是绘制数据的代码(来自花瓣长度和花瓣宽度的Iris数据集的数据帧):

import seaborn as sns
iris = sns.load_dataset("iris")    
grid = sns.JointGrid(iris.petal_length, iris.petal_width, space=0, size=6, ratio=50)
    grid.plot_joint(plt.scatter, color="g")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果从虹膜数据集中获取此图形,我如何在其中绘制我选择的线条?例如,负斜率线可能会将簇分开,并且正斜率可能会跨越它们.

python matplotlib seaborn

10
推荐指数
2
解决办法
3万
查看次数

使用OpenCV putText在图像上打印时出错

我正在尝试cv::Mat使用图像()打印文本cv::putText

string text = "Funny text inside the box";
int fontFace = FONT_HERSHEY_SCRIPT_SIMPLEX;
double fontScale = 2;
int thickness = 3;  
cv::Point textOrg(10, 130);
cv::putText(img, text, textOrg, fontFace, fontScale, Scalar::all(255), thickness,8);
Run Code Online (Sandbox Code Playgroud)

但这会导致运行时出现访问冲突错误.而

cv::putText(img, "text", textOrg, fontFace, fontScale, Scalar::all(255), thickness,8);
Run Code Online (Sandbox Code Playgroud)

导致"??? text"被打印在图像上.什么可能出错?

c++ opencv

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

如何设置PIL加载的默认字体的大小,使其适合我的8x8矩阵?

我正在努力在8x8矩阵显示器上显示文本,而且我没有.我在BeagleBone上知道的.ttf文件.

根据这里的一个例子,我应该可以说font = ImageFont.load_default()而不是加载.ttf,但是,这显然没有指定字体的尺寸!有什么办法吗?另外,有你知道的地方肯定我能找到在Ubuntu 14.04.1的我BBB版本的.ttf字体?

import Image
import ImageDraw
import ImageFont

# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.
width = disp.width
height = disp.height
image = Image.new('1', (width, height))
# Load default font.
font = ImageFont.load_default()

# Alternatively load a TTF font.
# Some other nice fonts to try: http://www.dafont.com/bitmap.php
#font = ImageFont.truetype('Minecraftia.ttf', 8)

# Write two lines of text.
draw.text((x, top),    'Hello', …
Run Code Online (Sandbox Code Playgroud)

python ubuntu fonts python-imaging-library beagleboneblack

9
推荐指数
1
解决办法
3884
查看次数

如何在Amazon EC2 linux上安装lxml依赖项?

我试过了:

sudo yum install libxml2-dev libxslt-dev python-dev
Run Code Online (Sandbox Code Playgroud)

我得到了:

Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/latest                                         | 2.1 kB     00:00     
amzn-updates/latest                                      | 2.3 kB     00:00     
No package libxml2-dev available.
No package libxslt-dev available.
No package python-dev available.
Run Code Online (Sandbox Code Playgroud)

pip也没用.

我得到了这样的包:

git clone --branch lxml-3.2.4 https://github.com/lxml/lxml
Run Code Online (Sandbox Code Playgroud)

然后我尝试没有cython,因为sudo python setup.py install给了我RuntimeError: ERROR: Trying to build without Cython, but pre-generated 'src/lxml/lxml.etree.c' is not available

sudo python setup.py install --without-cython
Run Code Online (Sandbox Code Playgroud)

然后我得到了:

sudo python setup.py install --without-cython
Building lxml version 3.2.4.
WARNING: Trying to build …
Run Code Online (Sandbox Code Playgroud)

python linux lxml amazon-ec2 amazon-web-services

8
推荐指数
2
解决办法
5166
查看次数

如何以垂直角度在blob上采样线?(在Python/OpenCV中,除非你建议切换到别的东西)

我正在开发一个程序,它将跟踪二进制blob中心的点,类似于弯曲的五彩纸屑.稍后我将使用跟踪曲线的三次样条拟合这些点.

作为该计划的一部分,我需要:

- 创建一个2D矢量,对二进制图像中的斜线进行采样,

- 计算沿五彩纸屑斑点的每个位置使用的角度.

以下是图像的一些示例,以及跟踪的点可能如下所示的草图:

在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述

找到黑色五彩纸屑垂直部分的中心很简单.如果你是黑色像素,找到左右白色边缘,中间是这些之间的距离的一半.这样做很容易,因为用于进行上述计算的2d向量只是图像的一行.

这是一个五彩纸屑片的10像素高度片段

在此输入图像描述

但五彩纸屑并不总是直线和垂直排列!有时它们是弯曲的或水平对齐的.这里需要的是一个二维矢量,它以一定角度切割五彩纸屑的截面. 从图像中采样这个有角度的矢量的最有效方法是什么?实际上,在像Python PIL或OpenCV这样的图像处理库中,是否有可以通过图像获取角度矢量的操作?如果我制作一个,我怎么能注意确保它有效?

计算所需向量角度的最有效方法是什么? 获得适当角度的一种方法是找到导致返回的2d向量中的最小宽度黑色段的角度.我不需要做到这一点,只需要以30度的增量循环360度.获得合适角度的另一种方法可能是找到五彩纸屑曲线的切线,并使用与之垂直的线 - 但是可能会更复杂.

任何关于如何更好地解决问题的想法都会非常有帮助.关于如何在图像上获取2d线的任何具体建议,以及获得垂直角度的有效方法也将是很好的.

在此输入图像描述

python algorithm opencv computer-vision

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