Перейти к содержимому
Compvision.ru
Rino256

Как получить значения пикселей?

Recommended Posts

Здравствуйте! C OpenCv работаю недавно. Проблема такая: нужно получить значения крайнего ряда пикселей по X и Y. Пробовал использовать метод cvmGet и записывать результаты в массив типа double. Но компилятор пишет ошибку: expression must have a constant value. Размерность массива задается переменной c и r, которые я получаю таким образом:


int c= img->width


int r= img->height;

В чем ошибка? И если я неправильно получаю значения пикселей, подскажите пожалуйста как это правильно сделать. Заранее спасибо за помощь! Вот полностью код:

#include "stdafx.h"

#include <opencv\highgui.h>

#include <opencv\cxcore.h>

#include <opencv2\core\core.hpp>

#include <opencv2\core\core_c.h>

#include <opencv2\imgproc\imgproc_c.h>

#include <opencv2\imgproc\imgproc.hpp>

#include <opencv2\calib3d\calib3d.hpp>



int _tmain(int argc, _TCHAR* argv[])

{

	IplImage *img= cvLoadImage("C:\\Users\\Rino256\\Desktop\\face\\test.jpg");

	int c= img->width;

    int r= img->height;

	cvNamedWindow("ex", CV_WINDOW_AUTOSIZE);

	double arr_x[c];

	double arr_y[r];


	cv::Mat mtx(img);

    CvMat mat= mtx; 

	for(int i=0; i<img->width; i++){

		arr_x[i]=cvmGet(&mat, 0, i );

	}


	for(int i=0; i<img->height; i++)

	{

		arr_y[i]= cvmGet(&mat, i, 0);

	}

	cvWaitKey(0);

	cvReleaseImage(&img);

    cvDestroyWindow("ex");

	return 0;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

используйте новый интерфейс cv::Mat, а не IplImage.

http://stackoverflow.com/questions/17919399/accessing-pixel-value-of-gray-scale-image-in-opencv

ну если надо старое то тут раздел Accessing image elements

http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Размер Массива (r, c) должен быть целочисленной константой, значением const либо константным выражением, в котором все значения известны на момент компиляции. Размер Массива не может быть переменной, значение которой устанавливается во время выполнения программы. Использовав операцию new можно обойти это ограничение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×