我想编制一张长方形纸张的检测,这张纸在每一面都不一定要完全笔直,因为我可以"在空中"拍摄它,这意味着纸张的单面可能会得到扭曲了一下.
应用程序(iOs和android)CamScanner非常好,我想知道如何实现它.首先我想到了:
但这给了我很多不同类型图像的问题.我想知道是否有更好的方法直接检测图像中的矩形形状,如果是这样,如果camscanner也可以像这样实现它!?
以下是CamScanner中拍摄的一些图像.即使在a)侧面扭曲(但是角落仍然显示在叠加层中,但并不真正适合白纸的角落),并且在b)背景非常接近实际纸张但这些都被很好地检测到了它仍然被正确识别:

它甚至可以正确获取旋转的图片:

当我插入一些测试错误时,它会失败但至少检测到一些轮廓,但总是尝试将其检测为矩形:

在这里它完全失败了:

我想在最后三个例子中,如果它会进行霍夫变换,它可能已经检测到矩形的四个边中的至少两个.
有什么想法和提示吗?非常感谢提前
image image-processing rectangles edge-detection hough-transform
我有一个像这样的pandas dataFrame:
content
date
2013-12-18 12:30:00 1
2013-12-19 10:50:00 1
2013-12-24 11:00:00 0
2014-01-02 11:30:00 1
2014-01-03 11:50:00 0
2013-12-17 16:40:00 10
2013-12-18 10:00:00 0
2013-12-11 10:00:00 0
2013-12-18 11:45:00 0
2013-12-11 14:40:00 4
2010-05-25 13:05:00 0
2013-11-18 14:10:00 0
2013-11-27 11:50:00 3
2013-11-13 10:40:00 0
2013-11-20 10:40:00 1
2008-11-04 14:49:00 1
2013-11-18 10:05:00 0
2013-08-27 11:00:00 0
2013-09-18 16:00:00 0
2013-09-27 11:40:00 0
Run Code Online (Sandbox Code Playgroud)
日期是索引.我使用以下方法将值减少到几个月:
dataFrame = dataFrame.groupby([lambda x: x.year, lambda x: x.month]).agg([sum])
Run Code Online (Sandbox Code Playgroud)
哪个输出:
content
sum
2006 3 66
4 …Run Code Online (Sandbox Code Playgroud) 如何更改格式以不显示如下矩阵:
1.0e+003 *
3.1251 0 0 0 0 0 0 0 0 0
0 3.1251 0 0 0 0 0 0 0 0
0 0 3.1251 0 0 0 0 0 0 0
0 0 0 3.1251 0 0 0 0 0 0
0 0 0 0 3.1251 0 0 0 0 0
0 0 0 0 0 3.1251 0 0 0 0
0 0 0 0 0 0 3.1251 0 0 0
0 0 0 0 0 …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个带有CUDA功能的mex文件,用于MATLAB.当我做错事(例如错误的指针或类似的东西)时,MATLAB总是崩溃(窗口提示我结束,发送报告进行数学运算或尝试继续).有没有办法防止这种情况发生?这样开发真的很烦人,但你可能知道自己:几乎没有人可以在没有"试错"的情况下编写完美的代码......到目前为止,谢谢!
可能重复:
在单个图中绘制4条曲线,具有3个y轴
假设我在Matlab中有以下数据集作为示例:
x = linspace(0, 9, 10);
y1=arrayfun(@(x) x^2,x);
y2=arrayfun(@(x) 2*x^2,x);
y3=arrayfun(@(x) x^4,x);
Run Code Online (Sandbox Code Playgroud)
因此你可以看到他们有相同的x轴.现在我想要以下情节:
一个x轴,限制为0到9(这些限制也应该是刻度),带有N个刻度(我希望能够自己定义N),因此在中间有N-2个刻度,因为0和9本身已经是刻度.我希望y1和y2引用相同的y轴,左边显示的是0和最大值([y1,y2]),并且中间有M个刻度.比我想在右边有另一个轴,其中y3指的是......
y1,y2和y3应该在同一个图例框中有条目...感谢到目前为止!
编辑:argh刚发现这个:在一个情节中绘制4条曲线,有3个y轴,也许我可以把它自己搞定......我现在就试试吧!
编辑:什么时候使用对数x轴?!
我目前非常头疼地让一个小的GUI工作得很好,这不是用GUI编辑器创建的,而是以编程方式创建的!到目前为止我所拥有的内容如下:
hFig = figure();
set(hFig, 'Position', [300 200 500 400]);
plot((1:10).^2, '*-r');
% Größe des Plots so anpassen, dass links Platz für Buttons
ap = get(gca, 'TightInset');
fp = get(gcf, 'Position');
set(gca, 'Position', [160/fp(3), 30/fp(4), (fp(3)-180)/fp(3), (fp(4)-60)/fp(4)]);
uicontrol('Style', 'pushbutton', 'String', 'foo', 'Position', [15 fp(4)-60 110 30]);
uicontrol('Style', 'pushbutton', 'String', 'bar', 'Position', [15 fp(4)-100 110 30]);
Run Code Online (Sandbox Code Playgroud)
尝试调整它的大小:它看起来并不相同,这意味着uicontrol盒不会保持在相同的相对位置,并且从轴到图窗口的边距会变大.我想要实现的是:
有一个给定位置(x/y,宽度和高度)的数字窗口,里面有一个图.该图将具有x和y的标题和标签.将图形设置为高度和宽度,使TightInset加上某个px尺寸(例如TightInset + 10px)的每个方向上的边距与图窗口一样大; 除了在左边放置150px的自由空间以放置一些uicontrol按钮,并让它们保持在相同的位置:这与能够从顶部/左边(顶部= 20,左边= 10)给出位置相同底部/左侧.
非常感谢!
如何有效地将矩阵转换为行向量.例:
>> a = [1 2; 3 4]
a =
1 2
3 4
Run Code Online (Sandbox Code Playgroud)
该(:)符号给我:
>> a(:)
ans =
1
3
2
4
Run Code Online (Sandbox Code Playgroud)
但我希望得到这样的结果:
>> b = a'; b(:)
ans =
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
换位和附加的var-assignment使得它慢得多.我可以通过重塑这样的方式完成任务:
>> reshape(a',4,1)
ans =
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
这比前一个快一点,见板凳:
runs = 1000;
num = 1000;
A = rand(num);
times = zeros(runs, 2);
for i = 1:runs
tic
x = A';
x = x(:);
t1 = toc;
x = reshape(A',size(A,1)*size(A,2),1);
t2 = toc-t1; …Run Code Online (Sandbox Code Playgroud) 是否有可能self::在PHP中执行某些操作,无需在同一个类中指定类名称调用静态方法.看看我是怎么做到的:
public class Foo
public static void blaa() {...}
public void foobar
{
Foo.blaa();
}
Run Code Online (Sandbox Code Playgroud)
但是我喜欢它
public class Foo
public static void blaa() {...}
public void foobar
{
_SOME_SORT_OF_SELF_.blaa();
}
Run Code Online (Sandbox Code Playgroud)
不必一遍又一遍地写下类名...同样适用于静态属性.而不是使用Foo.MY_ATTR可能通过访问它_SOME_SORT_OF_SELF_.MY_ATTR.
可能?谢谢
我开始(或至少尝试)开发Android应用程序,我在Android sdk上使用eclipse.
现在我想知道是否有更快的方法来"测试"并尝试在代码中重写的内容而不是在模拟器中启动它?
我想知道因为我在8gb ram和q9550(四核)上运行而且需要一些时间(让我们说20秒)上传并启动apk现在
我想知道这是否真的是唯一的测试方式,因为它需要大量的时间,特别是当我尝试新的不起作用的东西时,我总是要像这样运行它让我们说20次直到我弄清楚我的代码有什么问题......
我试着通过一个简单的例子来解释我的意思:
我有这样一张桌子myprods:
id | name
1 galaxy s4 mini
2 samsung galaxy s4
3 galaxy galaxy s3
4 iphone 4s
5 apple iphone 4s
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这个查询:
SELECT *
FROM myprods
WHERE name LIKE "%samsung%" OR name LIKE "%galaxy%" OR name LIKE "%s4%"
Run Code Online (Sandbox Code Playgroud)
我的查询结果是:
id | name
1 galaxy s4 mini
2 galaxy s4
3 galaxy galaxy s3
Run Code Online (Sandbox Code Playgroud)
现在我不仅返回匹配的行,还返回命中数.如果其中一个LIKE-phrase适用于该行,那么ONE命中.因此,在这种情况下,我希望命中为0,1,2或3.这意味着:LIKE短语"%galaxy%"不应该被计为id = 3的两次命中,它只计为"命中"或"未命中" .
预期的结果现在是:
id | name | hits
1 galaxy s4 mini 2
2 samsung galaxy s4 3 …Run Code Online (Sandbox Code Playgroud) matlab ×5
matrix ×2
add ×1
android ×1
axis ×1
class ×1
crash ×1
cuda ×1
display ×1
eclipse ×1
figure ×1
format ×1
image ×1
java ×1
match ×1
matplotlib ×1
methods ×1
mex ×1
mysql ×1
pandas ×1
php ×1
plot ×1
python ×1
rectangles ×1
reshape ×1
resize ×1
row ×1
self ×1
string ×1
testing ×1
uicontrol ×1
vector ×1