astrgan
-
Количество публикаций
35 -
Зарегистрирован
-
Посещение
-
Days Won
2
Сообщения, опубликованные пользователем astrgan
-
-
Smorodov
Спасибо большое)
-
Что-то не могу до конца разобраться.
Может кто-нибудь покажет как например в opencv создать сеть решающею XOR?
-
Если использовать нейросеть для распознавания изображений (с предварительной обработкой на OpenCV), то какой библиотекой лучше пользоваться?
OpenCV или какой-нибудь другой?
-
Здравствуйте.
Подскажите какой-нибудь пример с использованием нейронных сетей из библиотеки OpenCV.
-
Если использовать OpenCV совместно с Qt, то без подобного преобразования не обойтись?
QImage mat2qimage(const cv::Mat& mat) { cv::Mat rgb; cv::cvtColor(mat, rgb, CV_BGR2RGB); return QImage((const unsigned char*)(rgb.data), rgb.cols, rgb.rows, QImage::Format_RGB888); };
P.S. не нравится что приходится применять cvtColor(mat, rgb, CV_BGR2RGB), кажется что на ровном месте производительность буду терять.
-
Хмм.
В примерах которые идут с библиотекой OpenCV есть два исходника которые демонстрируют работу каскада Хаара (находятся и обводятся в круг глаза и лицо).
Это objectDetection2.cpp и objectDetection.cpp.
Пример objectDetection.cpp безбожно тормозит, а objectDetection2.cpp летает.
Я почему-то всегда запускал objectDetection.cpp и мучился)
-
Там это просто по другому называется: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
Что-то ссылка не открывается(
-
Делал с помощью eclipse (в Ubuntu)там вроде такого нет.
p.s. проверю позже на MS VS.
-
Без манипуляций на много лучше. Можно сказать не тормозит.
-
проблема решилась
-
Здравствуйте.
Пытаюсь обучить каскад с помощью программы opencv_traincascade.exe, но она выдает ошибку)
Parameters can not be written, because file haarcascade/params.xml can not be opened.
Никак не могу понять в чем дело.
Запускаю вот так:
opencv_traincascade.exe -data haarcascade -vec samples.vec -bg Bad.dat -numStages 16 -minhitrate 0.999 -maxFalseAlarmRate 0.4 -numPos 200 -numNeg 500 -w 20 -h 20 -mode ALL -precalcValBufSize 1024 -precalcIdxBufSize 1024
-
Здравствуйте
Запустил пример который идет вместе с библиотекой Object Detection.
Ищет лица, глаза и обводит их синим кругом.
Вообщем все нечего и даже работает, вот только какой-то он тормознутый, видео отстает где-то на 2 сек.
Это так и должно быть?
Каскады на androide вроде быстрее работают, может рисование кругов замедляет его работу?
-
Получилось сделать так:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { Mat rgbaInnerWindow; Mat mIntermediateMat= new Mat(); Mat rgba = inputFrame.rgba(); Size sizeRgba = rgba.size(); int rows = (int) sizeRgba.height; int cols = (int) sizeRgba.width; int left = cols / 8; int top = rows / 8; int width = cols * 3 / 4; int height = rows * 3 / 4; rgbaInnerWindow = rgba.submat(top, top + height, left, left + width); Imgproc.cvtColor(rgbaInnerWindow, mIntermediateMat, Imgproc.COLOR_RGBA2GRAY); Imgproc.cvtColor(mIntermediateMat, rgbaInnerWindow, Imgproc.COLOR_GRAY2BGRA); rgbaInnerWindow.release(); return rgba; }
Но вроде раньше получалось сделать это как-то по проще (меньше строк) в вер 4.2.3, хотя может просто я ошибаюсь и делал также.
- 1
-
Canny сделать получилось (собственно я его скопировал)
Mat rgbaInnerWindow; Mat mIntermediateMat= new Mat(); Mat rgba = inputFrame.rgba(); Size sizeRgba = rgba.size(); int rows = (int) sizeRgba.height; int cols = (int) sizeRgba.width; int left = cols / 8; int top = rows / 8; int width = cols * 3 / 4; int height = rows * 3 / 4; rgbaInnerWindow = rgba.submat(top, top + height, left, left + width); Imgproc.Canny(rgbaInnerWindow, mIntermediateMat, 80, 90); Imgproc.cvtColor(mIntermediateMat, rgbaInnerWindow, Imgproc.COLOR_GRAY2BGRA, 4); rgbaInnerWindow.release(); return rgba;
А вот чернобелое неработает, не могу понять почемуMat rgbaInnerWindow; Mat mIntermediateMat= new Mat(); Mat rgba = inputFrame.rgba(); Size sizeRgba = rgba.size(); int rows = (int) sizeRgba.height; int cols = (int) sizeRgba.width; int left = cols / 8; int top = rows / 8; int width = cols * 3 / 4; int height = rows * 3 / 4; rgbaInnerWindow = rgba.submat(top, top + height, left, left + width); Imgproc.cvtColor(rgbaInnerWindow, rgbaInnerWindow, Imgproc.COLOR_RGBA2GRAY, 1); rgbaInnerWindow.release(); return rgba;
-
Спасибо!
Появился еще вопрос:
rgbaInnerWindow.release() - это команда удаляет изображение из памяти?
-
Здравствуйте.
Как перевести roi в серые полутона(android)?
Пробовал так, но не получается.
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat image = inputFrame.rgba();
Rect roi = new Rect(300, 50, 50, 10);
Mat sub =image.submat(roi);
Imgproc.cvtColor(sub, sub, Imgproc.COLOR_RGBA2GRAY);
sub.copyTo(image.submat(roi));
return image;
}
и так:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat image = inputFrame.rgba();
Rect roi = new Rect(300, 50, 50, 10);
Imgproc.cvtColor(image.submat(roi), image.submat(roi), Imgproc.COLOR_RGBA2GRAY);
return image;
}
P.S. самое обидное это то что раньше я знал как это делать(
-
-
А поверхность вывода прописана в xml?
Что и где мне надо подправить если я хочу выводить на экран не все картинку, а только некоторую ее часть (например 1/3 от размера оригинала).
-
А вообще если я хочу скопировать некую прямоугольную часть изображения в др. экземпляр класса mat, то такой код верен?
Rect roi = new Rect(300, 50, 50, 10); imageRIO = image.submat(roi);
или так:Rect roi = new Rect(300, 50, 50, 10); imageRIO.copyTo(image.submat(roi));
-
Пробовал еще так:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { Rect roi = new Rect(300, 50, 50, 10); Mat roiM = new Mat (inputFrame.gray(),roi); return roiM; }
-
Хочу обрезать изображение и вывести его на экран.
Пытаюсь сделать так:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { Mat roiM = inputFrame.gray(); Rect roi = new Rect(300, 50, 50, 10); return roiM.submat(roi); }
но приложение не работает(
Подскажите пожалуйста как сделать правильно.
P.S. переделываю стандартный пример "tutorial-1-camerapreview"
-
P.S. Большое спасибо!)
-
А это "mOpenCvCameraView.setCvCameraViewListener(this);" инициализируется обработчик камеры?
Метод "onCameraFrame" запускается всякий раз когда с камеры приходит новое изображение?
-
Подскажите пожалуйста.
Как я понимаю программа начинается с метода .
mOpenCvCameraView.setCvCameraViewListener(this);
это установка "слушителя" который будет следить за изменением чего-то. Если так, то где обработчик.
В общем если не трудно объясните в каком порядке будут вызывается методы или хотя бы что будет работать после метода onCreate.
public class Tutorial1Activity extends Activity implements CvCameraViewListener2 { private static final String TAG = "OCVSample::Activity"; private CameraBridgeViewBase mOpenCvCameraView; private boolean mIsJavaCamera = true; private MenuItem mItemSwitchCamera = null; private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); } break; default: { super.onManagerConnected(status); } break; } } }; public Tutorial1Activity() { Log.i(TAG, "Instantiated new " + this.getClass()); } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { Log.i(TAG, "called onCreate"); super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.tutorial1_surface_view); if (mIsJavaCamera) mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_java_surface_view); else mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_native_surface_view); mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); mOpenCvCameraView.setCvCameraViewListener(this); } @Override public void onPause() { super.onPause(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); } public void onDestroy() { super.onDestroy(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } @Override public boolean onCreateOptionsMenu(Menu menu) { Log.i(TAG, "called onCreateOptionsMenu"); mItemSwitchCamera = menu.add("Toggle Native/Java camera"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { String toastMesage = new String(); Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); if (item == mItemSwitchCamera) { mOpenCvCameraView.setVisibility(SurfaceView.GONE); mIsJavaCamera = !mIsJavaCamera; if (mIsJavaCamera) { mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_java_surface_view); toastMesage = "Java Camera"; } else { mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_native_surface_view); toastMesage = "Native Camera"; } mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); mOpenCvCameraView.setCvCameraViewListener(this); mOpenCvCameraView.enableView(); Toast toast = Toast.makeText(this, toastMesage, Toast.LENGTH_LONG); toast.show(); } return true; } public void onCameraViewStarted(int width, int height) { } public void onCameraViewStopped() { } public Mat onCameraFrame(CvCameraViewFrame inputFrame) { return inputFrame.rgba(); } }
Помогите понять ошибку при работе с OpenCV
в OpenCV
Опубликовано · Report reply
С помощью этого кода хочу подготовить картинки для обучения нейросети.
Но бывает вылетает это