我试图从我的相机获取fps,以便我可以将其传递给VideoWriter输出视频.但是,我通过VideoCapture::get(CV_CAP_PROP_FPS)相机调用获得0 fps .如果我硬编码,我的视频可能太慢或太快.
#include "opencv2/opencv.hpp"
#include <stdio.h>
#include <stdlib.h>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
cv::VideoCapture cap;
int key = 0;
if(argc > 1){
cap.open(string(argv[1]));
}
else
{
cap.open(CV_CAP_ANY);
}
if(!cap.isOpened())
{
printf("Error: could not load a camera or video.\n");
}
Mat frame;
cap >> frame;
waitKey(5);
namedWindow("video", 1);
double fps = cap.get(CV_CAP_PROP_FPS);
CvSize size = cvSize((int)cap.get(CV_CAP_PROP_FRAME_WIDTH),(int)cap.get(CV_CAP_PROP_FRAME_HEIGHT));
int codec = CV_FOURCC('M', 'J', 'P', 'G');
if(!codec){ waitKey(0); return 0; }
std::cout …Run Code Online (Sandbox Code Playgroud) 我想让我的Qt Window保持领先.当setWindowFlags(Qt::WindowStaysOnTopHint)被执行时,该窗口将成为(在Windows 7)隐藏.
我也尝试过:
Qt::WindowFlags flags = windowFlags();
setWindowFlags(flags | Qt::WindowStaysOnTopHint);
Run Code Online (Sandbox Code Playgroud)
而且,它仍然是一样的.我在这做错了什么?
我目前正在尝试使用 xdotool 将密钥发送到进程(我知道它可能不适用于所有未设置 _NET_WM_PID 的进程)。我无法将击键发送到焦点之外的其他窗口。如果您将击键发送到CURRENTWINDOW. 下面是我用来测试 xdotool 功能的片段。
extern "C"{
#include <xdo.h>
}
//extern "C" xdo_window_search
#include <iostream>
#include <string.h>
using namespace std;
int main(){
xdo_t* p_xdo = xdo_new(NULL);
// Allocate memory for search query.
xdo_search_t s;
// Clear the allocated memory.
memset(&s, 0, sizeof(xdo_search_t));
// Set the search query.
s.pid = 1916;
s.max_depth = -1;
s.searchmask = SEARCH_PID;
s.require = xdo_search::SEARCH_ANY;
// Allocate memory for output
Window* windows;
int no_windows;
xdo_window_search(p_xdo,&s,&windows,&no_windows);
cout << no_windows << endl;
// …Run Code Online (Sandbox Code Playgroud) 我写了一个简单的程序来测试xdotool是否能满足我的要求.(嗯,不是真的.我的第一步是确保我是否可以调用xdotool库.)
#include <xdo.h>
#include <iostream>
using namespace std;
int main(){
cout << xdo_version() << endl;
xdo_new(NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我编译它时g++ -o a main.cpp libxdo.a -lXtst -lX11 -lXinerama -I ../test/xdotool-2.20110530.1,我收到以下错误消息:
/tmp/ccW95RQx.o: In function `main':
main.cpp:(.text+0x5): undefined reference to `xdo_version()'
main.cpp:(.text+0x29): undefined reference to `xdo_new(char*)'
collect2: error: ld returned 1 exit status
make: *** [sendkey] Error 1
Run Code Online (Sandbox Code Playgroud)
我没有使用apt-get install的开发包,因为它安装了一个动态库.所以,我做了一个apt-get源并自己构建了库.我通过执行以下命令验证了xdo_version和xdo_new是静态库中定义的函数:
$ nm libxdo.a | grep xdo_version
00000000000002b0 T xdo_version
$ nm libxdo.a | grep xdo_new
0000000000004070 T xdo_new
0000000000003c90 T xdo_new_with_opened_display …Run Code Online (Sandbox Code Playgroud) 我试图使用我自己的cmake文件而不是随附的qmake .pro文件从Qt编译录音机示例,我收到以下错误:
qtaudiorecorder\audiorecorder.h(63) : error C2146: syntax error : missing ':' before identifier 'slots'
我的CMake文件:
find_package(Qt5 REQUIRED COMPONENTS multimedia widgets)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Multimedia REQUIRED)
add_definitions(-DQT_NO_KEYWORDS)
add_executable(audio_recorder audiorecorder.cpp main.cpp qaudiolevel.cpp qaudiolevel.h audiorecorder.h audiorecorder.ui audiorecorder_small.ui)
qt5_use_modules(audio_recorder Widgets Multimedia)
Run Code Online (Sandbox Code Playgroud)
audiorecorder.h:
#ifndef AUDIORECORDER_H
#define AUDIORECORDER_H
#include <QMainWindow>
#include <QMediaRecorder>
#include <QUrl>
QT_BEGIN_NAMESPACE
namespace Ui { class AudioRecorder; }
class QAudioRecorder;
class QAudioProbe;
class QAudioBuffer;
QT_END_NAMESPACE
class AudioRecorder : public QMainWindow
{
Q_OBJECT
public:
AudioRecorder(QWidget *parent = 0);
~AudioRecorder();
public slots: …Run Code Online (Sandbox Code Playgroud) 我在头文件中有两个具有不同构建约束的go文件.
constants_production.go:
// +build production,!staging
package main
const (
URL = "production"
)
Run Code Online (Sandbox Code Playgroud)
constants_staging.go:
// +build staging,!production
package main
const (
URL = "staging"
)
Run Code Online (Sandbox Code Playgroud)
main.go:
package main
func main() {
fmt.Println(URL)
}
Run Code Online (Sandbox Code Playgroud)
当我做的时候go install -tags "staging",有时会打印production; 有时,它打印staging.同样,当我这样做的时候go install -tags "production"......
如何在每次构建时获得一致的输出?当我将staging指定为构建标志时,如何使其进行打印分段?当我将生产指定为构建标志时,如何使其打印生产?我在这里做错了吗?
当我执行 get 操作时GetWindowPlacement,WINDOWPLACEMENT::showCmd似乎总是 1,即SW_SHOWNORMAL。
有谁知道为什么会这样以及是否已更新?有谁知道这个变量是由应用程序本身维护还是由操作系统维护?
我在 Windows 7 上运行这个。
我使用它来实现与此线程中提到的相同目的:我试图撤消以前显示的隐藏窗口,而不将隐藏窗口存储在内存中(隐藏/显示将在不同的运行会话中调用)或磁盘上。
void hide(const unsigned int pid){
std::list<HWND> windowList = getWindowbyPID(pid);
for(std::list<HWND>::iterator it = windowList.begin(); it != windowList.end(); it++){
if(IsWindowVisible(*it)){ std::cout << "Hid WIN#" << *it << std::endl; ShowWindow(*it,SW_HIDE); }
}
}
void show(const unsigned int pid){
std::list<HWND> windowList = getWindowbyPID(pid);
for(std::list<HWND>::iterator it = windowList.begin(); it != windowList.end(); it++){
//if(IsWindowVisible(*it)){ ShowWindow(*it,SW_SHOW); }
WINDOWPLACEMENT wp;
wp.length = sizeof(wp);
wp.showCmd = 0; // Just to clear showCmd …Run Code Online (Sandbox Code Playgroud)