Ответы пользователя по тегу Python
  • Как сохранить контуры слева направо?

    @D3Nd3R
    Найдите центры boundingRect и отсортируйте по X.
    Ответ написан
    Комментировать
  • Есть ли в Pycharm аналог Workspace'a из Matlab?

    @D3Nd3R
    В матлабе Workspace просто отбражает текущие переменные, это полезно, например, если вы работаете не в редакторе кода, а в командной стороке. Во всех IDE есть такая возможность, в Pycharm такая вкладка появляется, если запустить код в режиме дебага и поставить точку останова. Название вкладки Variables.
    Ответ написан
    Комментировать
  • Как задать выход нейронной сети?

    @D3Nd3R
    Использовать соответствующую вашим требованиям функцию активации, например, ReLU.
    Ответ написан
    Комментировать
  • Как найти толщину рамки в изображении?

    @D3Nd3R
    Решаем с помощью openCV.
    1. Пороговая обработка (все что != цвету рамки -> 0, иначе 1);
    2. Находим границы с помощью canny;
    3. Находим контуры(findContours с флагом RETR_EXTERNAL) найти самый длинный. Это по идее будет внутренняя сторона рамки.
    4. Апроксимируем контур (convexHull)
    5. Зная левую верхнюю и правую нижнюю точки, можно найти рамки.
    толщина левой = Xmin;
    толщина верхней = Ymin;
    толщина правой = w - Xmax;
    толщина нижней = р - Ymax;
    Ответ написан
    Комментировать
  • Почему не накладывается прозрачная картинка на изображение?

    @D3Nd3R
    С PIL не работал.
    Но можно решить такую проблему через openCV. Путем умножения соответствующих областей изображения на коэффициенты. Например:
    img = 0.7 * img 
    img1 = 0.3 * img1
    img2 = img + img1
    Ответ написан
    Комментировать
  • Python Как обрезать изображения?

    @D3Nd3R
    Дополню ответ Aleksey Solovyev.
    1. Переводим в чб.
    2. На бинарном изображении (вместо cv2.Canny необходимо применить cv2.threshold, так как цвет рамки - белый то подобрать порог будет нетрудно) необходимо найти внешний контур (cv2.findContours с параметром RETR_EXTERNAL) и затем останется сохранить часть изображения, которая лежит внутри контура.
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/core/core.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    #include <algorithm>
    
    int main(int argc, char *argv[])
    {
    	cv::Mat img,gr,th;
    	img = cv::imread("1.jpg");
    	cv::cvtColor(img, gr, cv::COLOR_BGR2GRAY);
    	
    	cv::threshold(gr, th, 240.0, 255, cv::THRESH_BINARY);
    
    	std::vector<std::vector<cv::Point> > contours;
    	cv::findContours(th, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE);
    
    	auto max_vector_comp = [](std::vector<cv::Point> &lhs,
    		std::vector<cv::Point> &rhs)
    	{
    		return lhs.size() < rhs.size();
    	};
    	//поиск самого длинного контура
    	auto maxVector = std::max_element(contours.begin(), contours.end(),
    		max_vector_comp);
    	//находим описывающий прямоугольник
    	cv::Rect roi = cv::boundingRect(*maxVector);
    
    	cv::Mat croppedImg;
    	croppedImg = img(roi);
    	cv::imshow("inImg", img);
    	cv::imshow("croppedImg", croppedImg);
    	cv::waitKey();
    	return 0;
    }
    Ответ написан
    3 комментария