C++でソベルフィルタを実装したいのですが実行時に処理が終わらないです。
C++
1#include <opencv2/opencv.hpp> 2 3int main() { 4 5 // 画像の入力 6 cv::Mat input_image = cv::imread("input.jpg", 0); 7 cv::Mat sobel_image, output_image; 8 9 /* Sobelフィルタ (3×3) 10 -1 0 1 11 -2 0 2 12 -1 0 1 */ 13 14 // Sobelフィルタの処理(入力画像,出力画像,出力タイプ,x方向の微分次数,y方向の微分次数,フィルタサイズ) 15 cv::Sobel(input_image, sobel_image, CV_32F, 1, 0, 3); // x方向の微分フィルタ 16 // cv::Sobel(input_image, sobel_image, CV_32F, 0, 1, 3); // y方向の微分フィルタ 17 18 // convertScaleAbs(=スケーリング後に絶対値を計算し,結果を8ビットに変換) 19 cv::convertScaleAbs(sobel_image, output_image, 1, 0); 20 21 // 閾値以上の場合にエッジ(=白)と見なす(入力画像,出力画像,閾値,最大値,閾値タイプ) 22 // cv::threshold(output_image, output_image, 64, 255, cv::THRESH_BINARY); 23 24 // 画像の保存と表示 25 cv::imwrite("output.jpg", output_image); 26 cv::waitKey(); 27 return 0; 28}
追記
終わらなかったのは、末尾に
cv::waitKey();
を入れていたためでした。
回答2件
あなたの回答
tips
プレビュー