Делается все буквально за три команды.
1. Закрытие с помощью cv2.morphologyEx, ядро квадратное, размерами в 2 раза меньше квадратов. Удаляются одиночные квадраты.
2. инверсия. cv2.bitwise_not
3. cv2.connectedComponents подсчет оставшихся объединенных квадратов.
Если надо выделить отдельные квадраты в объединении, то используйте после п.1 cv2. matchTemplate
У вас в уравнении две переменные, а не одна, тета и фи. Тут нужны скорее цилиндрические координаты. Или изолинии. По сути это будет набор спиралей, вдоль оси фи с радиусом равным множителям до экспоненты ( если тета это параметр).
Формулу можно сократить, если использовать 0.5*sin(2x)=sin(x)*cos(x)
У Бюффона игла бесконечно тонкая, нити тоже бесконечно тонкие, а у вас нет. Если уменьшите длину иглы, то станет еще хуже, если сделаете длинее - то точность увеличится.
Как минимум Вы не учитываете что если в аналоге Примера 2 будут все буквы алфавита, то замена будет невозможна, т.к. невозможно будет использовать временную переменную (как буква я в Примере 2).
1. Выводите черным текст, делаете эрозию:
src_img.filter(ImageFilter.MinFilter(3)), размываете по Гауссу.
2. По тем же координатам выводите белый текст.
Используйте cv2.getPerspectiveTransform для нахождения матрицы преобразования по 4 парам точек (углы). А затем cv2.warpPerspective для, собственно преобразования картинки.
Также вместо OpenCV можно использовать Imagemagick.
Наверное как-то так:
1.Прочитать и декодировать файл mp3
2. Взять отсчеты через один.
3. Кодировать и записать файл.
В итоге вы должны получить ускоренный в 2 раза аудиофайл.
Да легко, при вращении через warpAffine установить BorderTypes в нужный тип.
Например:
cv.warpAffine(src, dst, M, dsize, cv.INTER_LINEAR, cv.BORDER_REFLECT, new cv.Scalar());
Тут можете потренироваться на Лене: https://docs.opencv.org/3.4/dd/d52/tutorial_js_geo...