以下のコードを使用してグレースケール化した後2値化しようと思うのですが、エラーメッセージが発生してしまいます。コード自体には間違いはないと思います。調べてみたところ画像の読み込みに失敗していると出ますが試しにグレースケールの部分を消してみると普通に2値化されます。ですから画像読み込みに失敗してるとは思わないのですが何が原因なのでしょうか。なにかわかる方いらっしゃいましたら教えてください。
python
1import cv2 2import numpy as np 3 4 5 6 7img = cv2.imread("C:/Users/sator/Pictures/number/origin.png", 0) 8 9 10threshold = 100 11 12img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 13 14 15 16ret2, img_otsu = cv2.threshold(img_gray, 0, 255, cv2.THRESH_OTSU) 17 18 19cv2.imwrite("calendar_mod4.png", img_otsu) 20print("end") 21
Message=OpenCV(4.5.3) c:\users\runneradmin\appdata\local\temp\pip-req-build-1i5nllza\opencv\modules\imgproc\src\color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<3,4,-1>,struct cv::impl::A0x7c80fca1::Set<1,-1,-1>,struct cv::impl::A0x7c80fca1::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)' > Invalid number of channels in input image: > 'VScn::contains(scn)' > where > 'scn' is 1 Source=C:\Users\sator\source\repos\color change\color change\color_change.py スタック トレース: File "C:\Users\sator\source\repos\color change\color change\color_change.py", line 12, in <module> (Current frame) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
> img = cv2.imread("C:/Users/sator/Pictures/number/origin.png", 0)
の、最後の「0」が付いてるので、上記実行時点で既にグレースケールになってるから、
> img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
はできずエラーになります
参考
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_gui/py_image_display/py_image_display.html

回答1件
あなたの回答
tips
プレビュー