我正在使用Visual Studio进行c ++编程,在x86环境(32位模式)下编写程序后,我尝试在x64环境下构建我的x86项目,所以我认为我应该创建一个win64控制台项目而不是win32控制台项目但是在VC2010中没有这样的选项.所以我想问一下,为了构建x64项目,我还应该选择win32项目并使用这里的指令更改项目内x64编译的设置?
我正在使用Windows 7 64位.
如果你的答案是肯定的,为什么它被称为win32?
我正在使用50 fps的摄像头(在Ubuntu环境和Qt框架中),每隔20 ms,我就会得到一个帧来处理.
我写了一个代码来从相机读取图像,然后将它们存储在硬盘中.
while(3.14)
{
cv::Mat Camera_Image = Capture_Image();
double T1 = (double)cv::getTickCount();
cv::imwrite (STORE_ADDRESS,Camera_Image);
T1 = (((double)cv::getTickCount() -T1)*1000)/cv::getTickFrequency();
print(T1);
}
Run Code Online (Sandbox Code Playgroud)
当我看到输出时,对于2048*1080图像尺寸,将单个图像写入硬盘的时间约为30毫秒.每个图像都是单通道(灰度)但我在硬盘中以.jpg格式编写它们.硬盘中每个图像的大小约为500K字节.
由于我在大约20毫秒内捕获一帧,我无法将它们全部写入硬盘实时.我已经使用Qthread编写了我的代码并创建了一个队列来查看是否有任何改进,但结果是相同的,它只是一个内存开销.
是否有可能改变这种情况,或使用其他库将这些图像更快地写入硬盘?如果可以的话,我也更喜欢Qt解决方案......
另外我需要将每一帧写入硬盘,所以请不要使用Motion压缩算法,因为它们不适用于我的情况....
代码:Mainwindow.cpp
Qlist<cv::Mat> FINAL_IM_VEC;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
IMREAD *IMR = new IMREAD(this); // an instance of IMREAD Class which reads camera frames
IMWRITE *IMW = new IMWRITE(this); // an instance of IMWRITE Class which Writes camera frames into hard disk
QThread *IMAGE_READ_Thread = new QThread(this);
QThread *Image_Store_Thread = new QThread(this); …Run Code Online (Sandbox Code Playgroud) 我正在使用 QTcpSocket 在两个应用程序之间进行通信。一个是c++程序,另一个是用PHP编写的网页。
目标是使用套接字将数据从我的网页发送到我的 C++ 程序。
我不知道如何在特定端口(例如 12345)上打开连接并监听它是否有任何数据。
到目前为止,我已经编写了以下代码:
主窗口文件
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Mysocket = new QSocket(this);
Mysocket->Initialization();
}
MainWindow::~MainWindow()
{
delete ui;
}
Run Code Online (Sandbox Code Playgroud)
QSocket.cpp
#include "qsocket.h"
#define SOCKET_PORT 12345
QSocket::QSocket(QObject *parent) :
QObject(parent)
{
}
void QSocket::Initialization()
{
//connected
socket = new QTcpSocket(this);
socket->connectToHost("localhost",SOCKET_PORT);
connect(socket,SIGNAL(connected()),this,SLOT(connected()));
connect(socket,SIGNAL(disconnected()),this,SLOT(disconnected()));
connect(socket,SIGNAL(bytesWritten(qint64)),this,SLOT(bytesWritten(qint64)));
connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead()));
if(!socket->waitForConnected(1000))
{
QMessageBox::StandardButton reply;
reply = QMessageBox::question(0,"Error","Error in Socket Connection",
QMessageBox::Yes|QMessageBox::No);
socket->close();
}
socket80->close();
}
void QSocket::connected()
{
QMessageBox::StandardButton reply;
int PortNumber = socket->localPort();
reply = …Run Code Online (Sandbox Code Playgroud) 我想将此图像中的白色像素数量减少到输出图像中的某些候选点或代表点(目标是模拟不同类型的形状)
如果您只是将输出图像中的灰点连接在一起,则路径相同但白色像素较少.此路径应该只有一个起点和一个终点,并涵盖从开始到结束的所有路径.
我可以使用CCA(连通分量分析)和一些其他规则来解决它!但似乎很慢.
我需要这个算法来减少描述形状所需的像素数量.
这里最快,最准确的算法是什么?
我也欢迎那些可以通过增加候选点来提高形状建模精度的方法.
我对视频序列中光流的概念不知何外,我已经阅读了关于光流的基础知识,我熟悉Horn&Shunck方法或Lucas&Kanade的方法.
我意识到在这些方法中我们正在计算一些代表图像中像素运动的向量,当然这些像素存在一些限制(亮度恒定,平滑度和......)
我的问题:
根据公式fx*u + fy *v = -ft
,我们如何准确地建立帧中的一个像素与帧t中的另一个像素之间的对应关系t + 1?
我的意思是我们怎么能确定它是t我们在帧中发现的帧中的相同像素t + 1,我不知道他们在算法的哪个部分找到这些像素并在帧t和帧中建立像素之间的对应关系t + 1!我知道我们可以找到移动的像素,但我不知道我们是如何找到帧t和帧中像素之间的关系的t + 1.
我希望你理解我的问题:o)(o:
如果可能的答案是尽可能的.
Merci beaucoup