#c #image-processing #opencv3.0 #opencv3.1
#c #обработка изображений #opencv3.0 #opencv3.1
Вопрос:
У меня есть один буфер чтения, в котором есть 8-битные необработанные данные изображения формата BGR, я хочу прочитать их с помощью функции opencv Mat, я попробовал приведенный ниже код, но я не получаю правильный кадр изображения, похоже, что моя программа неправильно считывает буфер чтения
Я попробовал этот код
#include <time.h>
#include <unistd.h>
#include <opencv2/opencv.hpp>
#include <stack>
#include <limits.h>
#include <time.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
using namespace std;
using namespace cv;
//using namespace std::chrono;
int main(int argc , char *argv[]) {
if (argc < 3) {
printf("Usage: %s <phys_addr> <offset>n", argv[0]);
return 0;
}
off_t offset = strtoul(argv[1], NULL, 0);
size_t len = strtoul(argv[2], NULL, 0);
/* Truncate offset to a multiple of the page size, or mmap will fail. */
size_t pagesize = sysconf(_SC_PAGE_SIZE);
off_t page_base = (offset / pagesize) * pagesize;
off_t page_offset = offset - page_base;
int fd = open("/dev/mem", O_SYNC);
unsigned char *mem = (unsigned char*)mmap(NULL, page_offset len, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, page_base);
if (mem == MAP_FAILED) {
perror("Can't map memory");
return -1;
}
cout << amp;mem << endl; // print the virtual address of the memory buffer
cv::Mat dst;
while(1)
{
cv::Mat imgbuf(Size(640, 480), CV_8UC3, mem, 640*3);
imshow("image2",imgbuf);
waitKey(0);
destroyAllWindows();
}
return 0;
}
Комментарии:
1. «но я не получаю надлежащей рамки для изображения», что это должно означать. пожалуйста, будьте более конкретными.
2. пожалуйста, обратитесь к моему вопросу, я добавил его в свой вопрос
3. Пожалуйста, не публикуйте код, который не работает и содержит посторонний мусор, как
"o continue"
в третьей строке. Почему вы показываете загруженный код отображения памяти? Как образы попадают в память, в которую вы заглядываете? Почему вы дважды показываете нам выходное изображение в своем вопросе — в чем разница?4. Я извинился за пару своих ошибок, я их исправил. У меня есть необработанные данные изображения в формате BGR, которые хранятся в буфере чтения, я пробовал использовать приведенный выше код, но у меня это не работает. пожалуйста, предоставьте мне любое решение. спасибо тебе
5. Вы все еще не ответили, почему вы показываете загрузку кода отображения памяти и как данные попадают в память…