Этот вопрос может показаться расплывчатым, но, если честно, это все, что у меня есть, и я не могу отладить эту проблему.Ошибка сегментации при использовании некоторых функций OpenCV
Я использую Linux Mint и долгое время использовал OpenCV. Все работало нормально, до нескольких недель назад. Теперь, когда я пытаюсь выполнить некоторые основные преобразования, такие как транспонирование или cvtColor, возникает ошибка сегментации. Я понятия не имею, когда и как это начиналось. Вот минимальный питон скрипт, который возвращает мне ошибку:
import cv2
im1 = cv2.imread("test.png", cv2.IMREAD_UNCHANGED)
im2 = cv2.cvtColor(im1, cv2.COLOR_RGBA2BGR)
Я сделал то же самое в C++, а также, на всякий случай:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
cv::Mat im1, im2;
im1 = cv::imread("test.png", cv::IMREAD_UNCHANGED);
cv::cvtColor(im1, im2, cv::COLOR_RGBA2BGR);
return 0;
}
Обратите внимание, что я использую COLOR_RGBA2BGR потому теста .png файл имеет альфа-канал.
Такая же ошибка сегментации возникает, когда я попытался транспонировать(). Это было в другой программе, которую я когда-либо писал. Эта же программа работает безупречно на другой машине. Я всегда предполагал, что эта ошибка может быть связана с несоответствиями в размере изображения или чем-то, но, к сожалению, его нет.
Я не уверен, какие другие функции возвращают эту ошибку. Я удалил OpenCV, построенный из источника, установлен снова и по-прежнему сохраняется ошибка. Единственный вариант, который, как мне кажется, остается для меня, - это свежая установка ОС, но любая форма помощи для отладки этой проблемы была бы весьма признательна.
Вы пытались использовать gdb, чтобы узнать, откуда возникает segfault? –
Я только что сделал сейчас, и похоже, проблема связана с OpenCL. Backtrace обнаружила много вещей libOpenCL. Я помню, как когда-то играл с ним, но его странно, поскольку я не упомянул OpenCL при компиляции OpenCV. Поэтому, я думаю, мне просто нужно избавиться от OpenCL и повторить попытку. –
ok, я добавлю это как aswer, чтобы люди знали, что вы на хорошем пути :) –