Configure OpenCV with Python for Mac

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
-- General configuration for OpenCV 3.0.0 =====================================
-- Version control: unknown
--
-- Platform:
-- Host: Darwin 15.0.0 x86_64
-- CMake: 3.3.2
-- CMake generator: Unix Makefiles
-- CMake build tool: /usr/bin/make
-- Configuration: RELEASE
--
-- C/C++:
-- Built as dynamic libs?: YES
-- C++ Compiler: /Library/Developer/CommandLineTools/usr/bin/c++ (ver 7.0.0.7000176)
-- C++ flags (Release): -fsigned-char -W -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -Qunused-arguments -Wno-semicolon-before-method-body -fno-omit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
-- C++ flags (Debug): -fsigned-char -W -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -Qunused-arguments -Wno-semicolon-before-method-body -fno-omit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
-- C Compiler: /Library/Developer/CommandLineTools/usr/bin/cc
-- C flags (Release): -fsigned-char -W -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -Qunused-arguments -Wno-semicolon-before-method-body -fno-omit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
-- C flags (Debug): -fsigned-char -W -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -Qunused-arguments -Wno-semicolon-before-method-body -fno-omit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
-- Linker flags (Release):
-- Linker flags (Debug):
-- Precompiled headers: NO
-- Extra dependencies: -framework OpenCL -framework Cocoa -framework QTKit -framework QuartzCore -framework AppKit
-- 3rdparty dependencies: libjpeg libwebp libpng libtiff libjasper IlmImf zlib ippicv
--
-- OpenCV modules:
-- To be built: hal core flann imgproc ml photo video imgcodecs shape videoio highgui objdetect superres ts features2d calib3d stitching videostab python2
-- Disabled: world
-- Disabled by dependency: -
-- Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python3 viz
--
-- GUI:
-- QT: NO
-- Cocoa: YES
-- OpenGL support: NO
-- VTK support: NO
--
-- Media I/O:
-- ZLib: build (ver 1.2.8)
-- JPEG: build (ver 90)
-- WEBP: build (ver 0.3.1)
-- PNG: build (ver 1.5.12)
-- TIFF: build (ver 42 - 4.0.2)
-- JPEG 2000: build (ver 1.900.1)
-- OpenEXR: build (ver 1.7.1)
-- GDAL: NO
--
-- Video I/O:
-- DC1394 1.x: NO
-- DC1394 2.x: NO
-- FFMPEG: NO
-- codec: NO
-- format: NO
-- util: NO
-- swscale: NO
-- resample: NO
-- gentoo-style: NO
-- GStreamer: NO
-- OpenNI: NO
-- OpenNI PrimeSensor Modules: NO
-- OpenNI2: NO
-- PvAPI: NO
-- GigEVisionSDK: NO
-- QuickTime: NO
-- QTKit: YES
-- V4L/V4L2: NO/NO
-- XIMEA: NO
-- gPhoto2: NO
--
-- Other third-party libraries:
-- Use IPP: 8.2.1 [8.2.1]
-- at: /Users/semprathlon/opencv-3.0.0/3rdparty/ippicv/unpack/ippicv_osx
-- Use IPP Async: NO
-- Use Eigen: NO
-- Use TBB: NO
-- Use OpenMP: NO
-- Use GCD YES
-- Use Concurrency NO
-- Use C=: NO
-- Use pthreads for parallel for:
-- NO
-- Use Cuda: NO
-- Use OpenCL: YES
--
-- OpenCL:
-- Version: static
-- libraries: -framework OpenCL
-- Use AMDFFT: NO
-- Use AMDBLAS: NO
--
-- Python 2:
-- Interpreter: /usr/bin/python2.7 (ver 2.7.10)
-- Libraries: /usr/lib/libpython2.7.dylib (ver 2.7.10)
-- numpy: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include (ver 1.8.0rc1)
-- packages path: lib/python2.7/site-packages
--
-- Python 3:
-- Interpreter: NO
--
-- Python (for build): /usr/bin/python2.7
--
-- Java:
-- ant: NO
-- JNI: /System/Library/Frameworks/JavaVM.framework/Headers /System/Library/Frameworks/JavaVM.framework/Headers /System/Library/Frameworks/JavaVM.framework/Headers
-- Java wrappers: NO
-- Java tests: NO
--
-- Matlab:
-- mex: NO
--
-- Documentation:
-- Doxygen: NO
-- PlantUML: NO
--
-- Tests and samples:
-- Tests: YES
-- Performance tests: YES
-- C/C++ Examples: YES
--
-- Install path: /usr/local
--
-- cvconfig.h is in: /Users/semprathlon/opencv-3.0.0/release
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:

BUILD_PYTHON_SUPPORT

Java代码编译命令的微小而关键的细节

今天室友问我,为什么javac编译源代码完成后,用java执行就报错Error: Could not find or load main class呢?

我习惯性地认为是环境变量的值不合适(百度上很多解答也类同),但检查后并无问题……

Read more

Bestcoder

Solved Problems
Clarke and food
Clarke and five-pointed star

Clarke and food

非常轻易地完成填充。

Clarke and five-pointed star

辛辛苦苦地敲完了又挂了。。。

我这里独立思考得到的结论是:
以五角星的一个顶点为参考点,则该点必在其他四点所构成的四边形之外,且其他四点相对于该点所成的张角之和是确定的;尽管随着所取的四个点的顺序不同会有不同的值,但也仅有三种情况。
可是测样例数据时不知怎的多加了一个待判值,结果WA了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
* Nov 14, 2015 7:35:56 PM
* PrjName: Bc62-02
* @semprathlon
*/
import java.io.*;
import java.util.*;
public class Main {
static Point[] pt=new Point[5];
static PrintWriter out=new PrintWriter(System.out);
static boolean check1(){
return !Point.isPointInRect(pt[0], pt[1], pt[2], pt[3], pt[4])&&
!Point.isPointInRect(pt[1], pt[2], pt[3], pt[4], pt[0])&&
!Point.isPointInRect(pt[2], pt[3], pt[4], pt[0], pt[1])&&
!Point.isPointInRect(pt[3], pt[4], pt[0], pt[1], pt[2])&&
!Point.isPointInRect(pt[4], pt[0], pt[1], pt[2], pt[3]);
}
static boolean check0(Point p,Point a,Point b,Point c,Point d){
double v1=Math.acos(-1.0)/5.0,v2=v1*2.0,v3=v1*3.0;
double angle=Vector.angle2(p, a, b)+Vector.angle2(p, b, c)+Vector.angle2(p, c, d);
angle=Math.abs(angle);
// out.println(v1+","+v2+","+v3+","+angle);
return Point.dcmp(angle-v1)==0||Point.dcmp(angle-v2)==0||Point.dcmp(angle-v3)==0;
}
static boolean check2(){
return check0(pt[0], pt[1], pt[2], pt[3], pt[4])&&
check0(pt[1], pt[2], pt[3], pt[4], pt[0])&&
check0(pt[2], pt[3], pt[4], pt[0], pt[1])&&
check0(pt[3], pt[4], pt[0], pt[1], pt[2])&&
check0(pt[4], pt[0], pt[1], pt[2], pt[3]);
}
public static void main(String[] args) throws IOException{
InputReader in=new InputReader(System.in);

int T=in.nextInt();
while(T-->0){
for(int i=0;i<5;i++)
pt[i]=new Point(in.nextDouble(), in.nextDouble());
if (pt[0].equals(pt[1])&&pt[1].equals(pt[2])&&pt[2].equals(pt[3])&&pt[3].equals(pt[4])&&pt[4].equals(pt[0])){
out.println("Yes");continue;
}
out.println(check2()?"Yes":"No");
}
out.flush();
out.close();
}
}

Bestcoder

Solved Problems
Numbers
Game
Subtrees

Numbers

可能需要两个特判?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**
* Oct 31, 2015 7:01:33 PM
* PrjName: Bc61-01
* @semprathlon
*/
import java.io.*;
import java.util.*;
public class Main {
static int maxl=1001;
static int[] f=new int[maxl];
static Vector<Integer> v=new Vector<Integer>();
public static void main(String[] args) throws IOException{
InputReader in=new InputReader(System.in);
PrintWriter out=new PrintWriter(System.out);
while(in.nextLine()!=null){
int n=in.nextInt();
// if (n<1) continue;
boolean has1=false,has2=false,has=false;;
Arrays.fill(f, 0);
for(int i=1;i<=n;i++){
int k=in.nextInt();
f[k]++;
if (f[k]>1&&k>0) has1=true;
if (f[k]>2) has2=true;
}
v.clear();
for(int i=0;i<maxl;i++)
if (f[i]>0)
v.add(i);
// for(Integer e:v.toArray(new Integer[0]))
// out.print(e+" ");
if (v.get(0)==0&&has1||has2){
out.println("YES");continue;
}
Integer[] a=v.toArray(new Integer[0]);
for(int i=0;i<a.length-1;i++)
if (!has)
for(int j=a.length-1;j>i;j--){
int k=Arrays.binarySearch(a, a[j]-a[i]);
if (k>i&&k<j){
has=true;break;
}

}
out.println(has?"YES":"NO");
}
out.flush();
out.close();
}
}

Game

各种分类讨论,但就是要写好最边缘的特判。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
* Oct 31, 2015 7:28:53 PM
* PrjName: Bc61-02
* @semprathlon
*/
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
InputReader in=new InputReader(System.in);
PrintWriter out=new PrintWriter(System.out);
while(in.nextLine()!=null){
int n=in.nextInt();
int s=in.nextInt();
int t=in.nextInt();
if (s==t){
out.println(n>1?-1:0);continue;
}
if (t==1){
if (s==n)
out.println(0);
else if (s==2)
out.println(1);
else
out.println(2);
}
else if (t==n){
if (s==1)
out.println(0);
else if (s==n-1)
out.println(1);
else
out.println(2);
}
else{
if (s==t+1||s==t-1||s==1||s==n)
out.println(1);
else
out.println(2);
}
}
out.flush();
out.close();
}

}

Subtrees

有些查找行为显然拖慢时间以致TLE。。。
有一个重要优化是从小到大枚举子树大小而不是相反方向;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
* Nov 7, 2015 10:31:31 PM
* PrjName: hdu5524-3
* @semprathlon
*/
import java.io.*;
import java.util.*;
public class Main {
static int maxn=64;
static long[] p2;
static HashSet<Long> st=new HashSet<Long>();
static PrintWriter out=new PrintWriter(System.out);
static void solve(long n){
if (n==0L) return;
st.add(n);
if (n==1L) return;
long f;
for(f=1L;;f=f<<1|1L)
if ((f>>1)<=n-1L-f&&(f<<1)>=n-1L-f)
break;
solve(f);
if ((f<<1|1)!=n)
solve(n-1-f);
}
static void init(){
p2=new long[maxn];
p2[0]=1L;
for(int i=1;i<maxn;i++){
p2[i]=p2[i-1]<<1;
p2[i-1]--;
}
}
public static void main(String[] args) throws IOException{
InputReader in=new InputReader(System.in);

init();
while(in.nextLine()!=null){
long n=in.nextLong();
st.clear();solve(n);
out.println(st.size());
}
out.flush();
out.close();
}

}

OS X 下个性化开发环境的搭建

本人的几轮开发环境配置都是在凌乱中完成的,是时候做一整理了。

  • 安装iTerm2
    没什么话好多说。这个终端应用棒棒的,尤其是卷帘般的可随时唤出的Hotkey Window。别忘了Make iTerm2 default Term

Screen Shot 2015-11-03 at 22.54.31

  • Homebrew
    Homebrew installs the stuff you need that Apple didn’t.

ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

A package manager with a handy command brew install that works just like apt-get install in Linux.

Snip20151024_2
Snip20151024_4

Read more

OS X 清洁地升级安装

尝鲜可能太急切,还是得慢慢啃黑苹果

Screen Shot 2015-10-23 at 5.29.49 AMScreen Shot 2015-10-23 at 16.50.01Screen Shot 2015-10-24 at 1.01.36 PM

OS X 10 11 SIP对NVRAM的重大影响

  • SIP是OS X El Capitan中新增的一大特性。
  • NVRAM断电后不丢失其中保存到信息。

这两大因素给予了我长达半个月的软硬件故障的困扰,几乎走投无路。

具体症状是每次启动黑苹果都会出现的错误报告,偶尔还附带着屏幕上的条带状花屏:

Read more

BestCoder

Solved Problems
SDOI
Reorder the Books

SDOI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/**
* 2015年10月10日 下午6:54:59
* PrjName:Bc59-01
* @ Semprathlon
*/
import java.io.*;
import java.util.*;
public class Main {
static Person[] ps;
static ArrayList<Person> li=new ArrayList<Person>();
public static void main(String[] args) throws IOException{
InputReader in=new InputReader(System.in);
PrintWriter out=new PrintWriter(System.out);
int T=in.nextInt();
while(T-->0){
int n=in.nextInt();
int m=in.nextInt();
float x1=0,x2=0;
int female=0,h=0;
ps=new Person[n];
for(int i=0;i<n;i++){
ps[i]=new Person(in.next(), in.next(), in.nextInt(), in.nextInt());
female+=ps[i].sex;
if (ps[i].sex==1&&h==0) h=i;
x1=Math.max(x1, ps[i].s1);
x2=Math.max(x2, ps[i].s2);
}
li.clear();
for(int i=0;i<n;i++){
ps[i].s1*=300;ps[i].s1/=x1;
ps[i].s2*=300;ps[i].s2/=x2;
ps[i].s=ps[i].s1*(float)0.3+ps[i].s2*(float)0.7;
if (female>0){
if (ps[i].s>ps[h].s&&ps[i].sex==1) h=i;
}
else
if (ps[i].s>ps[h].s) h=i;
//li.add(ps[i]);
}
out.println("The member list of Shandong team is as follows:");
Person p0=new Person();
if (female>0){
// out.println(li.get(h).name);
p0=new Person(ps[h]);
ps[h].s=-1;
m--;
}
Arrays.sort(ps, new Person.comp());
li.clear();

for(int i=0;i<m;i++)
li.add(ps[i]);
if (female>0){
li.add(p0);m++;
}
ps=li.toArray(new Person[0]);
Arrays.sort(ps, new Person.comp());
for(int i=0;i<m;i++)
out.println(ps[i].name);

}
out.flush();
out.close();
}
}
class Person{
String name;
int sex;
float s1,s2,s;
Person(){}
Person(Person p){
name=new String(p.name);
sex=p.sex;
s1=p.s1;
s2=p.s2;
s=p.s;
}
Person(String nm,String sx,int _s1,int _s2){
name=new String(nm);
if (sx.charAt(0)=='m') sex=0;
else sex=1;
s1=_s1;s2=_s2;
}
void debug(PrintWriter out){
out.println(name+"\t"+sex+"\t"+s);
}
static class comp implements Comparator<Person> {
public int compare(Person p1,Person p2){
return -Float.compare(p1.s, p2.s);
}
}
}

Reorder the Books

思索再三,竟然连充分条件、必要条件都没找准,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/** Oct 13, 2015 8:55:41 PM
* PrjName:hdu5500
* @author Semprathlon
*/
import java.io.*;
import java.util.*;
public class Main {
static int[] a;
public static void main(String[] args) throws IOException{
InputReader in=new InputReader(System.in);
PrintWriter out=new PrintWriter(System.out);
int T=in.nextInt();
while(T-->0){
int n=in.nextInt();
a=new int[n+1];
for(int i=1;i<=n;i++)
a[in.nextInt()]=i;
int ans=0;
// if (a[n]!=n&&a[n]!=1) ans++;
int k=a[n];
for(int i=n;i>1;i--)
if (a[i-1]<k){
k=a[i-1];n--;
}
else
break;
// out.println(n);
for(int i=n-1;i>1;i--){
if (a[i]==1)
continue;
boolean need=false;
for(int j=1;j<i;j++)
if (a[j]>a[i]) need|=true;
for(int j=i+1;j<=n;j++)
if (a[j]<a[i]) need|=true;
if (need){
ans++;
for(int j=1;j<=n;j++)
if (a[j]<a[i])
a[j]++;
a[i]=1;
}
}
if (a[1]!=1) ans++;
out.println(ans);
}
out.flush();
out.close();
}
}

观察、归纳后可以优化到最简,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Main {
static int[] a;
public static void main(String[] args) throws IOException{
InputReader in=new InputReader(System.in);
PrintWriter out=new PrintWriter(System.out);
int T=in.nextInt();
while(T-->0){
int n=in.nextInt();
a=new int[n+1];
for(int i=1;i<=n;i++)
a[in.nextInt()]=i;
int ans=0;
int k=a[n],h=0;
for(int i=n;i>1;i--){
if (a[i-1]>k){
ans++;
a[i-1]=h--;
}
k=a[i-1];
}
if (a[1]!=h+1) ans++;
out.println(ans);
}
out.flush();
out.close();
}

}

Clover 升级后检测不到Windows引导的解决办法

为了配合OS X
的更新,打算从Clover r2485升级到r2850;在EFI分区进行替换后发现新Clover引导界面找不到Windows操作系统。
经过三番五次的备份还原后终于发现,是EFI/Clover/drivers64UEFI目录下缺少必要的驱动文件所致。
将新旧版本的drivers64UEFI文件夹合并(若文件同名则以新易旧)即可排除错误。

OS X下的一些故障排除

  • When using App Store, it occurs that “ … failed to download. Use the Purchases page to try again.”

    Suggestions may help, but it is more applicable to restart the mac…