現在、LinuxでOpenCV2.4.3を使用しています。そして、私の/ dev /には、チーズで正常に動作するvideo0というデバイスがあります。
現在、次のコードを使用してカメラにアクセスしようとしています。このコードはqtcreatorで記述され、必要なライブラリを含めるためにqmakeでコンパイルされます。OpenCVライブラリについては、ソースコードをダウンロードし、自分のマシンのWebサイトの指示に従ってコンパイルしました。
++ main.cpp:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <cstdlib>
int main(int argc, char** argv) {
int cameraNumber = 0;
if (argc>1)
cameraNumber = atoi(argv[1]);
cv::VideoCapture camera;
camera.open(cameraNumber);
if(!camera.isOpened()) {
std::cerr<<"Error opening camera"<<std::endl;
exit(1);
}
camera.set(CV_CAP_PROP_FRAME_WIDTH,640);
camera.set(CV_CAP_PROP_FRAME_HEIGHT,480);
while(true) {
cv::Mat cameraFrame;
camera>>cameraFrame;
if (cameraFrame.empty()){
std::cerr<<"No frame read from camera"<<std::endl;
exit(1);
}
imshow("Camera",cameraFrame);
char keypress = cv::waitKey(20);
if (keypress==27) {
break;
}
}
return 0;
}
++ test.pro
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../opt/OpenCV-2.4.3/lib/release/ -lopencv_core
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../opt/OpenCV-2.4.3/lib/debug/ -lopencv_core
else:unix: LIBS += -L$$PWD/../../../../opt/OpenCV-2.4.3/lib/ -lopencv_core
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../opt/OpenCV-2.4.3/lib/release/ -lopencv_highgui
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../opt/OpenCV-2.4.3/lib/debug/ -lopencv_highgui
else:unix: LIBS += -L$$PWD/../../../../opt/OpenCV-2.4.3/lib/ -lopencv_highgui
INCLUDEPATH += $$PWD/../../../../opt/OpenCV-2.4.3/include
DEPENDPATH += $$PWD/../../../../opt/OpenCV-2.4.3/include
ただし、プログラムを実行すると、プログラムが出力さError opening camera
れて終了します。これは、カメラが正常に開かれないことを意味します。私はしばらくグーグルで検索されましたが、この問題を解決するための可能な解決策は見つかりませんでした。この問題を解決する方法について誰かが私にアドバイスをくれますか?ありがとう!