我正在从PNG文件中将24位RGB图像加载到我的OpenCV应用程序中.
然而,直接使用灰度图像加载图像imread会产生非常差的结果.
Mat src1 = imread(inputImageFilename1.c_str(), 0);
Run Code Online (Sandbox Code Playgroud)
将RGB图像加载为RGB并将其转换为灰度可以获得更好的效果.
Mat src1 = imread(inputImageFilename1.c_str(), 1);
cvtColor(src1, src1Gray, CV_RGB2GRAY);
Run Code Online (Sandbox Code Playgroud)
我想知道我imread是否正确使用我的图像类型.有谁经历过类似的行为?
使用转换为灰度的图像imread如下所示:

使用转换为灰度的图像cvtColor如下所示:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('t2.jpg', cv.COLOR_BGR2GRAY)
blur = cv.GaussianBlur(img, (5, 5), 0)
ret3, th3 = cv.threshold(blur, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Traceback (most recent call last):
File "F:/l4 project docs/project/l4proTest1/projectionStepTest.py", line 11, in <module>
ret3,th3 = cv.threshold(blur, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-9d_dfo3_\opencv\modules\imgproc\src\thresh.cpp:1557: error: (-2:Unspecified error) in function 'double __cdecl cv::threshold(const class cv::_InputArray &,const class cv::_OutputArray &,double,double,int)'
Run Code Online (Sandbox Code Playgroud)
THRESH_OTSU mode:
'src_type == CV_8UC1 || src_type == …Run Code Online (Sandbox Code Playgroud)