質問編集履歴

2

今の状態に適したタイトルへ変更

2022/09/21 09:29

投稿

yukimeat1999
yukimeat1999

スコア20

test CHANGED
@@ -1 +1 @@
1
- python OpenCV で imwrite() ができない
1
+ python OpenCV で imwrite() ができない→stitchができない
test CHANGED
File without changes

1

前提の項目で、「表示」と「書き出し」を誤表記。また、追記依頼に関して、プログラムを実行して試したことに追記。

2022/09/21 09:08

投稿

yukimeat1999
yukimeat1999

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提
2
2
  pythonのOpenCVで画像の読み込みと書き出しをしています。
3
3
 
4
- しかし、```imwrite()```をしても画像が表示されません。
4
+ しかし、```imwrite()```をしても画像が書き出しされません。
5
5
  (```imshow()```はできました)
6
6
 
7
7
  読み込もうとしている画像は横長の写真です。
@@ -9,6 +9,10 @@
9
9
 
10
10
  環境はVisual Studio2022でやっています。
11
11
 
12
+  
13
+ **追記**
14
+ **質問への追記・修正の依頼**より、```imwrite()```はできました。
15
+ パノラマ画像の連結ができてないようです。
12
16
 
13
17
  ### 実現したいこと
14
18
 
@@ -18,6 +22,7 @@
18
22
  ### 発生している問題・エラーメッセージ
19
23
 
20
24
  ```python
25
+ # エラー文
21
26
  OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:801: error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite'
22
27
  ```
23
28
  私のPCの環境では、DドライブにはBDドライブがついてるのですが、なぜかエラー文中にDドライブのディレクトリが表示されている。
@@ -79,6 +84,56 @@
79
84
  ・ディレクトリが間違っていないか確認のためprint()した。
80
85
 
81
86
 
87
+ 以下は、**質問への追記・修正の依頼**より
88
+
89
+ 1)jbpb0さんからの質問への追記・修正の依頼1つ目
90
+ > > cv2.imwrite(os.path.join(preparation_path, f'create_preparation_lt_{i:05}.png'), stitched[1])
91
+ >
92
+ > のすぐ上に
93
+ >
94
+ > print(stitched[1].shape)
95
+ >
96
+ > を追加して実行したら、何て表示されますでしょうか?
97
+
98
+ print()がオーバースローされ、エラーが表示されました。
99
+
100
+ ```python
101
+ # エラー文
102
+ 'NoneType' object has no attribute 'shape'
103
+ ```
104
+
105
+ デバッグ状態で、```stitched[1]```を見てみると、
106
+
107
+ ```python
108
+ # デバッグ文
109
+ stitched(1, None)
110
+ ```
111
+ が入っていました。
112
+ どこかのサイトでパノラマ作成時のエラー対策で、stitched[1]を使ってたと思ったんですが。
113
+
114
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-09-21/d82bb2e1-e56f-4e4b-92fa-093bed57fc34.png)
115
+
116
+ さらに、```print(stitched[0].shape)```として、配列の[0]を代入すると、
117
+
118
+ ```python
119
+ # エラー文
120
+ 'int' object has no attribute 'shape'
121
+ ```
122
+
123
+ と、エラーが表示された。
124
+
125
+ 2)jbpb0さんからの質問への追記・修正の依頼2つ目
126
+ > > (imshow()はできました)
127
+ >
128
+ > 「imshow()」で表示されてる画像をそのまま保存すればいいのなら、下記のようにしたらいいような
129
+ >
130
+ > stitched = Stitcher_PANORAMA.stitch(np_preparation_lt)
131
+ > cv2.imwrite(os.path.join(preparation_path, f'create_preparation_lt_{i:05}.png'), stitched[1])
132
+ > ↓ 変更
133
+ > cv2.imwrite(os.path.join(preparation_path, f'create_preparation_lt_{i:05}.png'), np_preparation_lt)
134
+
135
+ ```np_preparation_lt```をimwrite()すると、配列のように画像が横(右)にそのままつながった状態の画像が書き出しされました。
136
+
82
137
  ### 補足情報
83
138
 
84
139
  OS: Windows10