Это кажется довольно простым, но для жизни меня невозможно понять, почему это не сработает. У меня есть аналогичный код, который записывает изображение каждый раз, когда он читает изображение, и это прекрасно работает, сохраняя последнее изображение. Я серьезно озадачен тем, почему это сохраняет одно и то же изображение как img0, так и img1. Если бы вы, ребята, могли пролить свет, это было бы потрясающе! Большое спасибо за то, что нашли время, чтобы прочитать это.Принимать несколько фотографий в opencv
#include "highgui.hpp"
#include "imgproc.hpp"
#include "opencv.hpp"
#include <iostream>
#include <string>
#include <unistd.h>
using namespace std;
using namespace cv;
int main(){
VideoCapture stream(0);
if(!stream.isOpened()){
cout << "No camera :(\n";
}
stream.set(CV_CAP_PROP_FRAME_WIDTH, 640);
stream.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
int img_num = 0;
int num_pics;
cout << "How many images do you want to take?\n";
cin >> num_pics;
Mat image;
while(img_num < num_pics){
cout << "Picture in...\n";
cout << "3...\n";
sleep(1);
cout << "2...\n";
sleep(1);
cout << "1...\n";
sleep(1);
stream.read(image);
imshow("pic",image);
imwrite(format("img_%d.jpg",img_num),image);
waitKey(3000);
img_num += 1;
}
return 0;
}
Изменить, чтобы добавить простой код для сохранения каждый кадр записывается (в тот же файл, так что в конечном счете должно быть последнее изображение видно):
#include "/home/sarah/opencv-2.4.9/modules/highgui/include/opencv2/highgui/highgui.hpp"
#include "/home/sarah/opencv-2.4.9/modules/imgproc/include/opencv2/imgproc/imgproc.hpp"
#include "/home/sarah/opencv-2.4.9/include/opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main(){
VideoCapture stream(0);
//stream.set(CV_CAP_PROP_FPS,1);
if(!stream.isOpened()){
cout << "No camera :(\n";
}
cout << "After\n";
stream.set(CV_CAP_PROP_FRAME_WIDTH, 640);
stream.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
Mat cameraFrame;
while(1){
stream.read(cameraFrame);
imshow("camera",cameraFrame);
imwrite("img.jpg",cameraFrame);
if(waitKey(30) == 13){
break;
}
}
return 0;
}
Что значит «У меня есть похожий код, который пишет изображение каждый раз, когда он читает изображение, и это прекрасно работает»? где этот код? – Samer
сделал 'imshow (" camera ", cameraFrame);' показывать ожидаемый результат? – lanpa
Нет, это не @lanpa – marshmallow