前提
環境について
macbook pro(M1) monterey
使用言語::C++
バージョン::OpenCV4.6.0
問題
大学の研究で画像を扱うのですが、その時にRGBからHSV色空間へと変えたくてcvtColor関数を使いたいのですがエラーが出てしまいます.
コンパイル自体はできるのですが、プログラムを実行すると下記のようなエラーが出てきます.
code
1#include <iostream> 2#include <string> 3#include <sstream> 4#include <iomanip> 5#include <opencv2/opencv.hpp> 6#include <opencv2/imgcodecs.hpp> 7#include <vector> 8#include <math.h> 9#include <opencv2/core/core.hpp> 10#include <opencv2/highgui/highgui.hpp> 11#include <opencv2/imgproc/imgproc.hpp> 12 13 14int main(){ 15 16 cv::Mat gray,binary,img;//画像格納用 17 cv::Mat hsv,smooth;//HSV色空間格納用 18 img = cv::imread("../img/sample3.png");//画像データの読み込み 19 gray = cv::imread("../img/sample3.png",0);//画像データの読み込み(グレースケール) 20 if(gray.empty()){//エラー処理 21 std::cout<<"error"<<std::endl; 22 return 0; 23 } 24 25 cv::imwrite("../img/gray.png",gray);//グレースケール画像の保存 26 std::cout<<"閾値を入力して下さい"<<std::endl; 27 28 int tsd_v = 135; 29 std::cout<<tsd_v<<std::endl; 30 // std::cin>> tsd_v; 31 32 cv::threshold(gray,binary,tsd_v,255,cv::THRESH_BINARY);//2値化 33 cv::imwrite("../img/binary.png",binary);//2値化画像の保存 34 35 cv::cvtColor(gray,hsv,cv::COLOR_BGR2HSV); 36 37 cv::Size ksize = cv::Size(3, 3); // ここのパラメータは適宜 38 cv::GaussianBlur(binary, smooth, ksize, 0); 39 cv::imwrite("../img/smooth.png",smooth); 40 cv::imshow("frame",smooth); 41 cv::waitKey(0); 42 43 return 0; 44} 45
error
1libc++abi: terminating with uncaught exception of type cv::Exception: OpenCV(4.6.0-dev) /opt/opencv/modules/imgproc/src/color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function 'cv::impl::(anonymous namespace)::CvtHelper<cv::impl::(anonymous namespace)::Set<3, 4, -1>, cv::impl::(anonymous namespace)::Set<3, -1, -1>, cv::impl::(anonymous namespace)::Set<0, 5, -1>, cv::impl::(anonymous namespace)::NONE>::CvtHelper(cv::InputArray, cv::OutputArray, int) [VScn = cv::impl::(anonymous namespace)::Set<3, 4, -1>, VDcn = cv::impl::(anonymous namespace)::Set<3, -1, -1>, VDepth = cv::impl::(anonymous namespace)::Set<0, 5, -1>, sizePolicy = cv::impl::(anonymous namespace)::NONE]' 2> Invalid number of channels in input image: 3> 'VScn::contains(scn)' 4> where 5> 'scn' is 1 6 7zsh: abort ./main
注:ライブラリについてよく分かっておらず、参考にしたページに記述されているインクルード文を継ぎ足しているため、不必要なものもあると思いますが
よろしくお願いします.

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/26 06:39
2022/06/27 01:48
2022/06/27 01:56
2022/07/04 10:43