Я пытаюсь написать код для программы, в которой, когда пользователь нажимает на изображение в выбранном месте, я должен отображать его значения RGB.
Я просмотрел документацию OpenCV и обнаружил, что функция putText поможет мне достичь желаемых результатов. Я написал код, следуя документации в OpenCV.
Вот мой код
cv::Mat img;
void mouse_Callback(int event , int x , int y , int flag ,void *params)
{
if(event == cv::EVENT_LBUTTONDOWN)
{
cv::Vec3b vec = img.at<cv::Vec3b>(x,y);
int b,g,r;
b = (int)vec(0);
g = (int)vec(1);
r = (int)vec(2);
cv::String st = to_string(b);
cout << b << endl;
cv::putText(img,st,cv::Point2i(x,y),cv::FONT_HERSHEY_COMPLEX_SMALL, 0.8, cvScalar(255,100,250), 1, CV_AA);
cv::imshow("image",img);
}
}
int main()
{
cv::namedWindow("image",CV_WINDOW_AUTOSIZE);
img = cv::imread("1.jpg",-1);
cv::setMouseCallback("image",mouse_Callback);
cv::imshow("image",img);
char key = cv::waitKey(0);
if(key==27)
{
cv::destroyAllWindows();
}
return 0;
}
После выполнения кода в течение первых двух или трех щелчков я получаю правильный вывод, после чего я получаю ошибку сегментации.
Спасибо.