我正在开发一个程序,它将跟踪二进制blob中心的点,类似于弯曲的五彩纸屑.稍后我将使用跟踪曲线的三次样条拟合这些点.
作为该计划的一部分,我需要:
- 创建一个2D矢量,对二进制图像中的斜线进行采样,
- 计算沿五彩纸屑斑点的每个位置使用的角度.
以下是图像的一些示例,以及跟踪的点可能如下所示的草图:

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


但五彩纸屑并不总是直线和垂直排列!有时它们是弯曲的或水平对齐的.这里需要的是一个二维矢量,它以一定角度切割五彩纸屑的截面. 从图像中采样这个有角度的矢量的最有效方法是什么?实际上,在像Python PIL或OpenCV这样的图像处理库中,是否有可以通过图像获取角度矢量的操作?如果我制作一个,我怎么能注意确保它有效?
计算所需向量角度的最有效方法是什么? 获得适当角度的一种方法是找到导致返回的2d向量中的最小宽度黑色段的角度.我不需要做到这一点,只需要以30度的增量循环360度.获得合适角度的另一种方法可能是找到五彩纸屑曲线的切线,并使用与之垂直的线 - 但是可能会更复杂.
任何关于如何更好地解决问题的想法都会非常有帮助.关于如何在图像上获取2d线的任何具体建议,以及获得垂直角度的有效方法也将是很好的.

我知道PIL Image.seek()和Image.tell()PIL的方法允许我去一个特定的帧,并分别列出当前帧.我想知道总共有多少帧.是否有获取此信息的功能?或者,在python中是否有一种方法可以创建循环并捕获在没有图像时发生的错误?
from PIL import Image
videopath = '/Volumes/USB20FD/test.tif'
print "Using PIL to open TIFF"
img = Image.open(videopath)
img.seek(0) # .seek() method allows browsing multi-page TIFFs, starting with 0
im_sz = [img.tag[0x101][0], img.tag[0x100][0]]
print "im_sz: ", im_sz
print "current frame: ", img.tell()
print img.size()
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我打开一个TIFF堆栈,并访问第一帧.我需要知道堆栈的"深度",因此如果不存在图像,我不会在下游计算中出现错误.
我尝试对已经对齐的序列进行评分.让我们说吧
seq1 = 'PAVKDLGAEG-ASDKGT--SHVVY----------TI-QLASTFE'
seq2 = 'PAVEDLGATG-ANDKGT--LYNIYARNTEGHPRSTV-QLGSTFE'
Run Code Online (Sandbox Code Playgroud)
给定参数
substitution matrix : blosum62
gap open penalty : -5
gap extension penalty : -1
Run Code Online (Sandbox Code Playgroud)
我确实浏览了biopython cookbook,但我能得到的是替换矩阵blogsum62,但我觉得必须有人已经实现了这种类型的库.
那么有人可以建议任何可以解决我的问题的库或最短的代码吗?
Thx提前
我有一些粒子,我已经在一个更大的图像中识别出来,需要为每个粒子解析成更小的图像.我已经使用了regionprops的"BoundingBox"函数,但还没有成功.我现在如何使用BoundingBox制作图像的矩形子图像?我可以使用BoundingBox在原始图像上绘制一个矩形,但BoundingBox返回的参数似乎不是像素尺寸(x,y,宽度,高度),(x1,y1,x2,y2)等,我期望一个边界框返回.我已经使用coins.png编写了一些示例代码,以方便任何人理解.你能帮帮我吗?谢谢!
figure(1);
I = imread('coins.png');
bw = im2bw(I, graythresh(I));
bw2 = imfill(bw,'holes');
imshow(bw2);
figure(2);
L = bwlabel(bw2);
imshow(label2rgb(L, @jet, [.7 .7 .7]))
figure(3);
imshow(I);
s = regionprops(L, 'BoundingBox');
rectangle('Position', s(1).BoundingBox);
Run Code Online (Sandbox Code Playgroud) 我正在尝试将d3作为表示生物数据的工具.
我试图在我的Chrome浏览器中打开以下示例,以便我可以理解它是如何工作的.不幸的是我得到以下错误"未捕获的TypeError:无法读取未定义的属性'子项'".
如果单击该链接,则.html文件和.json文件的源代码将显示在可视化文件的输出下方.显然,可视化正在上面的页面上工作.我不确定我做错了什么.
我已将index.html文件和flare.json文件复制到Web服务器上的目录中.如果我试图从本地文件加载它我得到另一个错误:XMLHttpRequest无法加载file:/// C:/ Users /(..omitted ..)/ flare.json.仅支持HTTP的跨源请求.
确实可以从web服务器加载flare.json文件(我可以看到它的文本内容).它包含我试图绘制的树数据.
显然,flare.json文件的开头如下:
{
"name": "flare",
"children": [
...
不幸的是,d3.json在解析这些信息时遇到了麻烦......
如果有帮助,这是我尝试在Chrome中打开的.html文件:
<!DOCTYPE html>
<html>
<head>
<title>heirarchical graph</title>
<meta charset="utf-8">
<style>
.node circle {
fill: #fff;
stroke: steelblue;
stroke-width: 1.5px;
}
.node {
font: 10px sans-serif;
}
.link {
fill: none;
stroke: #ccc;
stroke-width: 1.5px;
}
</style>
<script type="text/javascript"
src="https://raw.github.com/mbostock/d3/master/d3.v2.min.js">
</script>
</head>
<body>
<script>
var diameter = 960;
var tree = d3.layout.tree()
.size([360, diameter / 2 - 120])
.separation(function(a, b) { return …Run Code Online (Sandbox Code Playgroud) 为什么我不能使用我的mac中的sshfs连接到我的BeagleBone?我可以ssh到这个IP地址就好了.我需要以某种方式创建一个特殊的挂载点吗?套接字没有连接是什么意思?
sudo sshfs root@192.168.7.1: /Volumes/
remote host has disconnected
mount_osxfusefs: failed to mount /Volumes@/dev/osxfuse0: Socket is not connected
Run Code Online (Sandbox Code Playgroud)
仅供参考我安装了sshfs brew cask sshfs
这是一个简单的页面,演示了d3的一些基本功能.我做了一个数据集var dataset = [3,1,4,1,5]; 并希望输出它以及一些段落.该数据显示,但之后的身体!奇怪......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> demo project</title>
<script type="text/javascript" src="d3/d3.v2.js"></script>
</head>
<body>
<script type="text/javascript">
d3.select("body").append("p").text("hello!");
d3.select("p").append("text").text(" hello!!");
d3.select("body").append("p").text("hello2!");
d3.select("p:nth-child(3)").append("text").text(" hello2!!");
var dataset = [3,1,4,1,5];
d3.select("p:nth-child(3n+1)")
.data(dataset)
.enter()
.append("p")
.text(function(d) { return d; });
d3.select("p:nth-child(7n + 1)").append("text").text("hello againss?");
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
该页面如下所示:

DOM看起来像这样(注意数据显示在正文关闭标记之后):

还要注意行d3.select("p:nth-child(7n + 1)").append("text").text("hello againss?"); 打算在我的所有数据之后打印,但它没有显示出来.
在准备处理视频时,我希望用户能够选择要在视频中处理的第一帧和最后一帧.轨迹栏似乎是一个有用的工具,但我可以使用它来读取和显示视频中的特定帧吗?
通常我会逐帧读取视频并使用while循环在其上运行我的处理算法:
cap = cv2.VideoCapture('myvideo.mp4')
while(cap.isOpened()):
ret, frame = cap.read()
# ....
Run Code Online (Sandbox Code Playgroud)
这不利于用户快速扫描视频以找到要处理的良好帧间隔.
轨迹栏非常适合设置图像处理参数,但如果有一个更好的工具,你可以考虑这个,请建议.您可以在下面看到一些使用轨迹栏设置阈值级别变量的代码.
def onTrackbarChange(trackbarValue):
pass
cv2.createTrackbar( 'threshold level', 'mywindow', 100, 255, onTrackbarChange )
thresholdlevel = cv2.getTrackbarPos('thresh','mywindow')
Run Code Online (Sandbox Code Playgroud)
有没有办法做这样的事情?
start_frame = cv2.getTrackbarPos('start-frame','mywindow')
ret, frame = cap.read(start_frame) #don't think this is possible
cv2.imshow('window', frame)
Run Code Online (Sandbox Code Playgroud)
理想的情况下,将有两个窗板,一个与所述start_frame,和一个与所述stop_frame,各由一个的TrackBar控制.
给定一个可以检测并绘制轮廓的斑点的阈值图像,是否可以在绘制轮廓时将局部曲率表示为热图?
即(1)是否可以确定开放的CV轮廓上的局部曲率(2)将该曲率映射到热图颜色空间(3)将轮廓绘制为热图.
我的目标是测量一个对象的"尖锐度",这样我就可以从尖端绘制一个向量到相反的非尖端.对于我的对象,我碰巧知道尖端的一面是顶部.
如果其他技术在表示"点"性方面比曲率更有效,可以随意提出.



我正在使用 Amazon EC2 ubuntu 微实例完成 Miguel Grinberg 的 Flask Megatutorial(一个微博应用程序)。
目前,每次我想启动 Flask 应用程序时,我都必须cd进入顶级目录~/microblog/。
然后,我输入: flask run -h 0.0.0.0 -p 50000启动应用程序。
有没有办法在命令行中指定目录,这样我就不必继续进入该目录来运行程序?似乎没有,但也许我错过了一些东西。我对linux也很陌生。
~/microblog$ flask run --help
* Tip: There are .env or .flaskenv files present. Do "pip install python-dotenv" to use them.
Usage: flask run [OPTIONS]
Run a local development server.
This server is for development purposes only. It does not provide the
stability, security, or performance of production WSGI servers.
The reloader and debugger …Run Code Online (Sandbox Code Playgroud)