我是Swift的新手.计算属性和设置为闭包的属性之间有什么区别?我知道每次都会重新计算计算属性.闭合不同吗?即
关闭:
var pushBehavior: UIPushBehavior = {
let lazilyCreatedPush = UIPushBehavior()
lazilyCreatedPush.setAngle(50, magnitude: 50)
return lazilyCreatedPush
}()
Run Code Online (Sandbox Code Playgroud)
计算:
var pushBehavior: UIPushBehavior {
get{
let lazilyCreatedPush = UIPushBehavior()
lazilyCreatedPush.setAngle(50, magnitude: 50)
return lazilyCreatedPush
}
}
Run Code Online (Sandbox Code Playgroud) 如何使用Python API一次(或几乎)使用OpenCV从两个或多个摄像头捕获视频?
我有三个网络摄像头,都具有视频流功能,位于/ dev/video0,/ dev/video1和/ dev/video2.
以教程为例,从单个摄像头捕获图像就是:
import cv2
cap0 = cv2.VideoCapture(0)
ret0, frame0 = cap0.read()
cv2.imshow('frame', frame0)
cv2.waitKey()
Run Code Online (Sandbox Code Playgroud)
这很好用.
但是,如果我尝试初始化第二个摄像头,尝试read()从它返回None:
import cv2
cap0 = cv2.VideoCapture(0)
cap1 = cv2.VideoCapture(1)
ret0, frame0 = cap0.read()
assert ret0 # succeeds
ret1, frame1 = cap1.read()
assert ret1 # fails?!
Run Code Online (Sandbox Code Playgroud)
为了确保我不会意外地给OpenCV一个坏的相机索引,我单独测试了每个相机索引,它们都是自己工作的.例如
import cv2
#cap0 = cv2.VideoCapture(0)
cap1 = cv2.VideoCapture(1)
#ret0, frame0 = cap0.read()
#assert ret0
ret1, frame1 = cap1.read()
assert ret1 # now it works?!
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:我的硬件是运行Ubuntu的Macbook Pro.在Macbook上专门研究这个问题,我发现其他人也遇到过这个问题,无论是在OSX上还是在不同类型的摄像头上.如果我访问iSight,我的代码中的两个调用都会失败.
我只是在阅读Anthony Williams的行动书中的C++并发性.有这个经典的例子有两个线程,一个产生数据,另一个消耗数据,AW写的代码很清楚:
std::vector<int> data;
std::atomic<bool> data_ready(false);
void reader_thread()
{
while(!data_ready.load())
{
std::this_thread::sleep(std::milliseconds(1));
}
std::cout << "The answer=" << data[0] << "\n";
}
void writer_thread()
{
data.push_back(42);
data_ready = true;
}
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么这个代码与我使用经典的挥发性bool而不是原子的不同.如果有人能够对这个问题敞开心扉,我将不胜感激.谢谢.
我正在尝试使用nuitka工具将我的python程序转换为ubuntu上的可执行文件.如果程序没有任何import语句,但是当我在导入某些程序的程序上使用它时,它会正常工作
test.py
import numpy
print "hello, world."
Run Code Online (Sandbox Code Playgroud)
在命令行上输入此内容
nuitka --recurse-all --python-version=2.7 test.py
Run Code Online (Sandbox Code Playgroud)
并给我这些错误
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/numarray/functions.py:45: Cannot find 'copyreg' in package 'numpy.numarray' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/distutils/npy_pkg_config.py:11: Cannot find 'configparser' in package 'numpy.distutils' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:1765: Cannot find 'Numeric' in package 'numpy.distutils' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:1770: Cannot find 'numarray' in package 'numpy.distutils' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/f2py/diagnose.py:48: Cannot find 'numpy_distutils' in package 'numpy.f2py' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/f2py/diagnose.py:87: Cannot find 'numpy_distutils.command.build_flib' in package 'numpy.f2py' as absolute import.
Run Code Online (Sandbox Code Playgroud) J. Bloch在撰写的Effective Java中Java 6提到了以下内容(第17项):
如果您认为必须允许从这样的类继承,一种合理的方法是确保该类永远不会调用其任何可覆盖的方法并记录此事实.换句话说,完全 消除了类对可覆盖方法的自我使用.
第18项:
如果您使用抽象类来定义类型,那么您可以让想要添加功能的程序员别无选择,只能使用继承.结果类比包装类更强大,更脆弱.
虽然不允许接口包含方法实现,但使用接口来定义类型并不会阻止您向程序员提供实现帮助.
现在Java 8使用其默认方法的实现(使用接口中的其他方法)接口对于继承是危险的.
例如:
public inteface MyInterface{
public void compute(Object o);
public default void computeAll(List<Object> oo){
for(Object o: oo)
compute(o); //self-use
}
}
Run Code Online (Sandbox Code Playgroud)
因此,根据J. Bloch的说法,当我们尝试实现接口时,它可能会引入一些问题,因为:
覆盖这样的方法(类似于J.Bloch提供的):
public class MyInterfaceCounter implements MyInterface{
private int count = 0;
@Override
public void compute(Object o) {
count++;
}
@Override
public void computeAll(List<Object> oo){
count += oo.size(); //Damn!!
MyInterface.super.computeAll(oo);
}
}
Run Code Online (Sandbox Code Playgroud)客户端访问接口的内部,即他们必须知道默认实现.
在Java 8中如何处理它?Effective Java的规则是否适用仍然适用?
而且,我们不能将默认方法声明为final(因为我们可以对类进行声明,它会使自用对于重写器来说不太危险).
我正在解析 EDI 文件并按 ~s 分割。我想知道 EDI 是否可以在数据本身中包含 ~ ?数据中是否有一条规则说“不”?适用于 810/850 等
我想使用 Swift 获取 iPhone 上气压计的压力值。有人可以告诉我该怎么做吗?我用来CLLocation访问海拔高度。可以用同一个类来进行压力吗?
编辑:
我将以下内容放入我的viewDidLoad()方法中,但它没有打印任何内容...请告知。
let altimeter = CMAltimeter()
if CMAltimeter.isRelativeAltitudeAvailable() {
altimeter.startRelativeAltitudeUpdates(to: OperationQueue.current!, withHandler: { data, error in
if !(error != nil) {
print("Relative Altitude: \(data?.relativeAltitude)")
print("Relative Pressure: \(data?.pressure)")
self.pressLabel.text = String(describing: data?.pressure)
}
})
}
Run Code Online (Sandbox Code Playgroud) 说,我有一个数组[20, 2, 3]
如何在Swift中乘以此数组的每个Int值?
那么2 x阵列变成了[40, 4, 6],3 x阵列变成了[60, 6, 9]等等?
我正试图从Swift中的视频中提取帧作为UIImages.我找到了几个Objective C解决方案,但我在Swift中找不到任何东西.假设以下是正确的,有人可以帮助我将以下内容转换为Swift或者让我自己采取如何做到这一点?
- (UIImage *)imageFromVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {
// courtesy of memmons
// http://stackoverflow.com/questions/1518668/grabbing-the-first-frame-of-a-video-from-uiimagepickercontroller
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
NSParameterAssert(asset);
AVAssetImageGenerator *assetIG =
[[AVAssetImageGenerator alloc] initWithAsset:asset];
assetIG.appliesPreferredTrackTransform = YES;
assetIG.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;
CGImageRef thumbnailImageRef = NULL;
CFTimeInterval thumbnailImageTime = time;
NSError *igError = nil;
thumbnailImageRef =
[assetIG copyCGImageAtTime:CMTimeMake(thumbnailImageTime, 60)
actualTime:NULL
error:&igError];
if (!thumbnailImageRef)
NSLog(@"thumbnailImageGenerationError %@", igError );
UIImage *image = thumbnailImageRef
? [[UIImage alloc] initWithCGImage:thumbnailImageRef]
: nil;
return image;
}
Run Code Online (Sandbox Code Playgroud) 使用以下命令尝试以 ANSI 格式写入文本文件,但打开时仍显示 UTF-8。ANSI格式怎么写?这是在 Windows 10 上。在记事本++或记事本右下角,当我打开不同的文本文件时,它会显示 ANSI 或 UTF-8。我的程序生成的结果是 UTF-8。
\nprivate void createHeader()\n {\n StringBuilder sb = new StringBuilder();\n string delimiter = "\xc2\xaa";\n\n sb.Append(batchNumber);\n sb.Append(delimiter);\n sb.Append("Delete PLUs");\n sb.Append(delimiter);\n\n string today = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt");\n //Console.WriteLine(today);\n sb.Append(today);\n\n for (int i =0; i < 15; i++)\n {\n sb.Append(delimiter);\n }\n\n sb.Append(Environment.NewLine);\n\n Console.WriteLine(sb.ToString());\n\n System.IO.StreamWriter objWriter;\n objWriter = new System.IO.StreamWriter(new FileStream(pathToFile, FileMode.OpenOrCreate), Encoding.ASCII);\n objWriter.WriteLine(sb.ToString());\n objWriter.Close();\n //System.IO.File.WriteAllText(pathToFile, sb.ToString(), Encoding.ASCII); // Erases current file and overwrite\n\n //return sb.ToString();\n }\nRun Code Online (Sandbox Code Playgroud)\n