could not find a writer for the specified extension in function ‘cv::imwrite_‘

error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:730: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'cv::imwrite_'

目录

error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:730: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'cv::imwrite_'

问题:

解决:

完整错误:


问题:

发生问题的原因是文件写入的后缀名是opencv不支持的类型。

import glob
import nibabel as nib
import skimage.io as io
import numpy as np
import cv2
from nibabel.testing import data_path
import nibabel as nib
import matplotlib.pyplot as plt
from PIL import Image as im
from tqdm.notebook import tqdm

#CZY1
file_7z = glob.glob(r'F:\CZY\2022\CZY1\TEST1\*.nii')
# file_7z = glob.glob(r'F:\CZY\2022\CZY1\TEST2\*.nii')

#CZY2
# file_7z = glob.glob(r'F:\CZY\2022\CZY2\TEST1\*.nii')
# file_7z = glob.glob(r'F:\CZY\2022\CZY2\TEST2\*.nii')

for i in file_7z:
    
    #print(i)
    file = i.replace('_Merge.nii','.jpg')
    
    #print(file)
    #
    image_jpg = cv2.imread(file,cv2.IMREAD_GRAYSCALE)
    image_jpg = image_jpg
    
    #
    img=nib.load(i)
    img_arr=img.get_fdata()
    img_arr=np.squeeze(img_arr)
    #my_array[my_array == 8] = 20
    img_arr[img_arr == 1] = 255
    #print(np.unique(img_arr))
    #print(image_jpg.shape,img_arr.shape)
    
    #-------------------------------------------------------------
    
    locs = np.where(img_arr==255)
    #print(locs)
    x0 = np.min(locs[1])
    x1 = np.max(locs[1])
    y0 = np.min(locs[0])
    y1 = np.max(locs[0])
    
    # image[start_x:end_x, start_y:end_y]
    crop_image = image_jpg[x0:x1,y0:y1]
    file = file.replace('TEST1','TEST1_1')
    #file = file.replace('TEST2','TEST2_1')
    #file = i.replace('TEST2','TEST2_1')
    #
    #file = i.replace('.jpg','_1.jpg')
    #file = i.replace('.JPG','_1.JPG') 
    #print(crop_image.shape)
    #print(type(crop_image))
    #print(file)
    #print(file)
    cv2.imwrite(i,crop_image)
    cv2.waitKey(0)
    

解决:

cv2.imwrite(i,crop_image)

改为file,正确的后缀是.jpg

cv2.imwrite(file,crop_image)

import glob
import nibabel as nib
import skimage.io as io
import numpy as np
import cv2
from nibabel.testing import data_path
import nibabel as nib
import matplotlib.pyplot as plt
from PIL import Image as im
from tqdm.notebook import tqdm


#CZY1
file_7z = glob.glob(r'F:\CZY\2022\CZY1\TEST1\*.nii')
# file_7z = glob.glob(r'F:\CZY\2022\CZY1\TEST2\*.nii')

#CZY2
# file_7z = glob.glob(r'F:\CZY\2022\CZY2\TEST1\*.nii')
# file_7z = glob.glob(r'F:\CZY\2022\CZY2\TEST2\*.nii')

for i in file_7z:
    
    #print(i)
    file = i.replace('_Merge.nii','.jpg')
    
    #print(file)
    #
    image_jpg = cv2.imread(file,cv2.IMREAD_GRAYSCALE)
    image_jpg = image_jpg
    
    #
    img=nib.load(i)
    img_arr=img.get_fdata()
    img_arr=np.squeeze(img_arr)
    #my_array[my_array == 8] = 20
    img_arr[img_arr == 1] = 255
    #print(np.unique(img_arr))
    #print(image_jpg.shape,img_arr.shape)
    
    #-------------------------------------------------------------
    
    locs = np.where(img_arr==255)
    #print(locs)
    x0 = np.min(locs[1])
    x1 = np.max(locs[1])
    y0 = np.min(locs[0])
    y1 = np.max(locs[0])
    
    # image[start_x:end_x, start_y:end_y]
    crop_image = image_jpg[x0:x1,y0:y1]
    file = file.replace('TEST1','TEST1_1')
    #file = file.replace('TEST2','TEST2_1')
    #file = i.replace('TEST2','TEST2_1')
    #
    #file = i.replace('.jpg','_1.jpg')
    #file = i.replace('.JPG','_1.JPG') 
    #print(crop_image.shape)
    #print(type(crop_image))
    #print(file)
    #print(file)
    cv2.imwrite(file,crop_image)
    cv2.waitKey(0)
    

完整错误:

--------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-96-426195a905f8> in <module>
     47     #print(file)
     48     #print(file)
---> 49     cv2.imwrite(i,crop_image)
     50     cv2.waitKey(0)
     51 

error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:730: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'cv::imwrite_'

OpenCV: Open Source Computer Vision Library

计算机视觉(Computer Vision,CV),是通过电脑算法去识别图像的一门学科。

图形图像在计算机上的应用,大概分为三个方面。

与图像的显示效果相关的,叫计算机图形学(Computer Graphics)。

与图像的压缩相关的,叫图像编码(image encoder)。经常说的H264、H265、VP8,都是图像的编码算法。

编码,都有对应的解码,它们是紧密关联的一个分支。

与图像的识别相关的,就叫计算机视觉(CV)。

OpenCV,是一个开源的计算机视觉框架。最早由intel发起,第一版使用C编写,从第二版开始改用C++编写。

C语言没有构造函数和析构函数,在需要矩阵计算的软件上,用起来很不方便。

著名的数学软件MATLAB,也是C++写的。

C++在科学计算领域,具有不可替代的地位。

OpenCV 是一个开源的计算机视觉库,可以从 http://opencv.org 获取。

1999 年,Gary Bradski(加里·布拉德斯基)当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了 OpenCV 项目。

OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。

OpenCV 自项目成立以来获得了来自英特尔和谷歌的大力支持,尤其需要感谢 Itseez,该公司完成了早期开发的大部分工作。此后,Arraiy 团队加入该项目并负责维护始终开源和免费的 OpenCV.org。
Itseez 是俄罗斯的一家视觉公司,专门从事计算机视觉算法。2016 年 5 月,英特尔收购该公司,以“帮助英特尔的用户打造创新型深度学习的 CV 应用,如果自动驾驶、数字安全监控和工业检测”(英特尔物联网总经理 Doug Dacies 如此说)。
OpenCV 设计用于进行高效的计算,十分强调实时应用的开发。它由 C++ 语言编写并进行了深度优化,从而可以享受多线程处理的优势。

OpenCV 的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。

OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函数,包括工业产品质量检验、医学图像处理、安保领域、交互操作、相机校正、双目视觉以及机器人学。

因为计算机视觉和机器学习经常在一起使用,所以 OpenCV 也包含一个完备的、具有通用性的机器学习库(ML模块)。这个子库聚焦于统计模式识别以及聚类。ML 模块对 OpenCV 的核心任务(计算机视觉)相当有用,但是这个库也足够通用,可以用于任意机器学习问题。

参考:openCV
 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data+Science+Insight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值