我只是学习如何编写基于循环的范围,但唯一的问题是我的编译器,Orwell Dev-C++似乎不支持它的默认模式(即c ++ 98).如何将此模式更改为支持此功能的另一个模式(以及C++ 0x的其他功能).谢谢.也:
这是错误消息:[错误]基于范围的for-for循环在C++ 98模式下是不允许的
我运行Windows 8
我的Dev C++版本是5.3.0.3
编译器是TDM-GCC 4.6.1 64位.
谢谢大家
在我写的石头,剪刀,剪刀程序中,我列举了三种不同的动作并将它们声明为一个类。但是,当我尝试编写using语句以便避免使用范围运算符时,它似乎不起作用。有人知道为什么吗?
enum class choice {rock, paper, scissors};
using namespace choice;
出现一条错误消息,说:[错误]'选择'不是名称空间名称。为什么是这样?我认为在这种情况下可以选择一个名称空间。
我知道关于这个主题有很多问题,但我所看到的大多数答案都描述了在我看来应该很简单的问题的复杂解决方法。这是我的目录结构:
Mapper/
LICENSE.txt
README.txt
setup.py
bin/
# nothing here, yet
mapper/
__init__.py
process.py
where.py
# ...
binconvert/
__init__.py
tocsv.py
todict.py
# ...
Run Code Online (Sandbox Code Playgroud)
我想在我所有本地开发的模块上使用绝对路径来减少混淆并避免这里提到的错误。
但是,我对此有多个问题。当我跑步时process.py,我import tocsv.py喜欢这样,
from mapper.binconvert import tocsv
Run Code Online (Sandbox Code Playgroud)
我收到错误: ModuleNotFoundError: No module named 'mapper'
我知道我可以做到from binconvert import tocsv,但就像我说的那样,我试图让所有本地开发的模块导入都使用绝对路径。
tocsv.py当我尝试where.py像这样导入时,我遇到了与以前相同的错误:
from mapper import where
Run Code Online (Sandbox Code Playgroud)
对于这个,我相信有一些方法可以使用点语法 relative import,但同样,我想保持我所有的路径都是绝对的。毕竟,我相信按照python文档的这段话,我应该可以做到:
当包被构造成子包时(如示例中的声音包),您可以使用绝对导入来引用兄弟包的子模块。例如,如果模块
sound.filters.vocoder需要在 中使用 echo 模块sound.effects package,则可以使用 fromsound.effects import echo。
sound/ Top-level package
__init__.py Initialize …Run Code Online (Sandbox Code Playgroud) 通过阅读有关 stackoverflow 的一些答案,到目前为止我已经学到了很多东西:
掩码必须是一个numpy数组(与图像具有相同的形状),其数据类型CV_8UC1为0到255。
但是,这些数字的含义是什么?是否在检测过程中将忽略任何具有相应掩码值为 0 的像素而将使用任何掩码值为 255 的像素?中间的值呢?
另外,如何在pythonnumpy中用数据类型初始化数组CV_8UC1?我可以用吗dtype=cv2.CV_8UC1
这是我目前使用的代码,基于我在上面所做的假设。但问题是当我detectAndCompute为任一图像运行时,我没有得到任何关键点。我有一种感觉,这可能是因为掩码不是正确的数据类型。如果我是对的,我该如何纠正?
# convert images to grayscale
base_gray = cv2.cvtColor(self.base, cv2.COLOR_BGRA2GRAY)
curr_gray = cv2.cvtColor(self.curr, cv2.COLOR_BGRA2GRAY)
# initialize feature detector
detector = cv2.ORB_create()
# create a mask using the alpha channel of the original image--don't
# use transparent or partially transparent parts
base_cond = self.base[:,:,3] == 255
base_mask = np.array(np.where(base_cond, 255, 0))
curr_cond = self.base[:,:,3] == 255 …Run Code Online (Sandbox Code Playgroud) Consumer我有一个由类和类组成的线程程序Producer。目前,我在实现中使用 Fifo queue.Queue,生产者put获取队列末尾的数据,消费者get获取队列末尾的数据。
但是,我想添加一个功能,如果有必要,可以Consumer通过将其放回前面来put支持(可能稍微修改过的)项目(以便返回的下一个项目是刚刚添加的项目,就像在堆栈中一样)。getQueueget
我知道这对于 s 是可能的,但我在这里deque读到它们仅对于和是线程安全的。出于上述目的,我还需要使用.append()popleft()appendleft()
是否存在具有 a 特性的线程安全数据结构deque?如果没有,我可以deque通过在使用时放入自己的锁来使线程安全吗appendleft?
我正在研究一个石头剪刀程序,但这次计算机选择摇滚一半时间,剪刀三分之一时间,纸张只有六分之一时间.我这样做的方式是我列举了六种可能的计算机选择值:
enum choicec {rock1, rock2, rock3, scissors1, scissors2, paper};
choicec computer;
Run Code Online (Sandbox Code Playgroud)
但是,在计算机做出选择之后,我必须将这些枚举值转换为摇滚,纸张或剪刀.我使用switch-case语句做到了这一点:
switch(computer) {
case rock1 || rock2 || rock3:
c = 1;
break;
case scissors1 || scissors2: //ERROR!
c = 3;
break;
case paper:
c = 2;
break;
}
Run Code Online (Sandbox Code Playgroud)
一个是摇滚,两个是纸,三个是剪刀.但是,在我作为注释写入错误的行上,它给了我这个错误:[错误]重复的案例值.
我不知道为什么.有任何想法吗?
我的项目是对齐航拍照片,制作马赛克地图.我的计划是从两张照片开始,将第二张与第一张对齐,然后从两张对齐的图像中创建一个"初始马赛克".完成后,我将第三张照片与初始马赛克对齐,然后将第四张照片与其结果对齐,从而逐步构建地图.
我有两种技术可以做到这一点,但使用的更准确的一种技术calcOpticalFlowPyrLK()仅适用于双图像阶段,因为两个输入图像的大小必须相同.因此,我尝试了一种新的解决方案,但它不太准确,并且每一步都会引入错误,最终会产生无意义的结果.
我的问题是双重的,但如果你知道一个人的答案,除非你愿意,否则你不必回答这两个问题.首先,有没有办法使用类似calcOpticalFlowPyrLK()但有两个不同大小的图像(这包括任何潜在的解决方法)?第二,有没有办法修改探测器/描述符解决方案,使其更准确?
这是仅适用于两个图像的准确版本:
# load images
base = cv2.imread("images/1.jpg")
curr = cv2.imread("images/2.jpg")
# convert to grayscale
base_gray = cv2.cvtColor(base, cv2.COLOR_BGR2GRAY)
# find the coordinates of good features to track in base
base_features = cv2.goodFeaturesToTrack(base_gray, 3000, .01, 10)
# find corresponding features in current photo
curr_features = np.array([])
curr_features, pyr_stati, _ = cv2.calcOpticalFlowPyrLK(base, curr, base_features, curr_features, flags=1)
# only add features for which a match was found to the pruned arrays
base_features_pruned = []
curr_features_pruned = …Run Code Online (Sandbox Code Playgroud) 所以我知道在类中编写构造函数之后,默认构造函数就会消失,所以你必须开始初始化每个对象.但是,有没有办法编写默认构造函数,以便您不必这样做?
谢谢.
我正在研究ffmpeg将其核心功能用作其一部分的python项目。从本质上讲ffmpeg,我使用的功能归结为以下两个命令:
ffmpeg -i udp://<address:port> -qscale:v 2 -vf "fps=30" sttest%04d.jpg
ffmpeg -i udp://<address:port> -map data-re -codec copy -f data out.bin
Run Code Online (Sandbox Code Playgroud)
很简单的东西。
我正在尝试创建一个自包含的程序(使用上述ffmpeg功能),可以轻松地将其安装在任何特定系统上,而无需依赖具有必要依赖项的系统,因为我希望将这些依赖项与程序本身打包在一起。
考虑到这一点,最好在程序中使用这些libav*库来执行此功能吗?还是ffmpy使用ffmpeg命令行工具的包装器()更好?我目前对每种弊端的想法是,使用库可能是最佳实践,但是要学会使用它们似乎很复杂(并且可能会学习C,这是我从未学过的C)。做我上面提到的两个基本的事情。总体而言,这些库对我来说有点黑匣子,并且没有太多的文档。但是,使用包装器的问题ffmpeg在于它本质上依赖于调用子进程,这似乎有些草率。尽管我不确定为什么我会如此强烈地反对子流程。
所以我创建了一个链表类:
class node {
public:
string name;
node *next;
node(string init) {name = init; next = nullptr;
};
Run Code Online (Sandbox Code Playgroud)
然后在main中我创建了一个节点指针并初始化了它指向的节点的名称.
node *root;
root->name = "Hello"; //Error
Run Code Online (Sandbox Code Playgroud)
编译器不会将此称为错误,但是当我运行程序时,它会停止在这行代码中工作.有谁知道为什么?
c++ ×5
python ×5
class ×3
dev-c++ ×2
opencv ×2
c++11 ×1
collections ×1
constructor ×1
deque ×1
enumeration ×1
ffmpeg ×1
import ×1
libav ×1
libavcodec ×1
libavformat ×1
list ×1
namespaces ×1
numpy ×1
object ×1
package ×1
pointers ×1
python-3.x ×1
using ×1