質問: cv2.cvtcolor(image, cv2.COLOR.BGR2GRAY) cv2.imwrite(r"C:\write_cv\gray_006.jpg") ``` 上記のコードに `cv2.countNonZero` を使って、白の割合を出すのが目標です。 ※画像名は仮想ですが、概ねこの通りです。
回答: 質問のエラーも含めて幾つか typo があります。 以下のようにすれば動作するでしょう。 ``` import cv2 image = cv2.imread(r"C:\library_cv\sky_006.jpg") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imwrite(r"C:\write_cv\gray_006.jpg", gray) ``` * `imread`のファイル名の`"`が閉じていない(質問時の転記ミスでしょう) * `cvtcolor`の`color`は大文字で始まる`cvtColor` * `cv2.COLOR.BGR2GRAY`は`cv2.COLOR_BGR2GRAY`の間違い(`.`ではなく`_`で接続する) * `imwrite`は2つ目のパラメータにイメージのオブジェクトを指定する必要がある コメントのリンク先は正しくはこちら Python,OpenCVで二値画像から白と黒の面積比を算出 上記記事の`bw_image`は2値化された画像データのオブジェクトです。 仕様はこちら。 cv::threshold 画像の閾値処理 Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst 使い方などの記事はこちら。 OpenCV – 画像処理の2値化の仕組みと cv2.threshold() の使い方 cv2.threshold() > > * 返り値 > + retval: 閾値 (cv2.THRESH_OTSU、cv2.THRESH_TRIANGLE を使用した場合に自動的に決まった閾値を知るための返り値) > + dst: 2値画像 > > >