我想旋转图像,但是如果没有裁剪,我无法获得旋转的图像
我原来的形象:

现在我使用这段代码:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
// Compile with g++ code.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc
int main()
{
cv::Mat src = cv::imread("im.png", CV_LOAD_IMAGE_UNCHANGED);
cv::Mat dst;
cv::Point2f pc(src.cols/2., src.rows/2.);
cv::Mat r = cv::getRotationMatrix2D(pc, -45, 1.0);
cv::warpAffine(src, dst, r, src.size()); // what size I should use?
cv::imwrite("rotated_im.png", dst);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并获得以下图像:

但我想得到这个:

非常感谢您的帮助!
我正在尝试使用OpenCV使用以下函数执行直方图均衡
Mat Histogram::Equalization(const Mat& inputImage)
{
if(inputImage.channels() >= 3)
{
vector<Mat> channels;
split(inputImage,channels);
Mat B,G,R;
equalizeHist( channels[0], B );
equalizeHist( channels[1], G );
equalizeHist( channels[2], R );
vector<Mat> combined;
combined.push_back(B);
combined.push_back(G);
combined.push_back(R);
Mat result;
merge(combined,result);
return result;
}
return Mat();
}
Run Code Online (Sandbox Code Playgroud)
但是当我得到结果时,输入和输出图像似乎没有区别,我做错了什么?
对不起图像质量不好,"预处理"(左)是直方图均衡,你可以看到它与输入相同(右).

错过了什么?
我需要对彩色图像进行直方图均衡.
首先,我将彩色图像转换为灰色并将其赋予equalizeHist功能:
image = cv2.imread("photo.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.equalizeHist(image)
cv2.imshow("equalizeHist", image)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
但在此之后我需要将图像转换回RGB; 我怎样才能做到这一点?
我是Python OpenCV的新手.我在这里阅读了一些文档和答案,但我无法弄清楚以下代码的含义:
if (self.array_alpha is None):
self.array_alpha = np.array([1.25])
self.array_beta = np.array([-100.0])
# add a beta value to every pixel
cv2.add(new_img, self.array_beta, new_img)
# multiply every pixel value by alpha
cv2.multiply(new_img, self.array_alpha, new_img)
Run Code Online (Sandbox Code Playgroud)
我已经知道了Basically, every pixel can be transformed as X = aY + b where a and b are scalars..基本上,我已经理解了这一点.但是,我不明白代码以及如何增加对比度.
直到现在,我已经设法简单地使用了图像 img = cv2.imread('image.jpg',0)
谢谢你的帮助
CLAHE是对比有限自适应直方图均衡和C中的源可以在http://tog.acm.org/resources/GraphicsGems/gemsiv/clahe.c找到.
到目前为止,我只看到了一些关于在灰度图像上应用CLAHE的示例/教程,所以是否可以在彩色图像上应用CLAHE(例如RGB 3通道图像)?如果有,怎么样?
我正在使用EmguCV 3.0.0包装器来访问OpenCV 3.0库.我Mat在几个地方使用这门课.以下是单个通道的示例,8x8图像由double值组成:
Mat image = new Mat(8, 8, DepthType.Cv64F, 1);
Run Code Online (Sandbox Code Playgroud)
的Image<>类提供用于获取和设置的像素值合理的手段,并且该方法是对相同的Matrix<>类,但是它似乎没有那么明显的Mat类.我弄清楚如何设置单个像素的唯一方法是使用掩码:
// set two pixel values, (0,0) to 9.0, (2, 3) to 42.0
Matrix<byte> mask = new Matrix<byte>(8,8);
mask.Data[0, 0] = 1;
image.SetTo(new MCvScalar(9.0), mask);
mask = new Matrix<byte>(8,8);
mask.Data[2, 3] = 1;
image.SetTo(new MCvScalar(42.0), mask);
Run Code Online (Sandbox Code Playgroud)
这感觉它应该是两行,而不是六行,所以我觉得我错过了一些东西.当Mat多个通道时,事情变得更加复杂,因为Matrix<>只有2D,因此必须使用掩模来设置每个通道上的像素.
我无法承受以这种方式设置像素的时间或内存. 如何通过单个方法调用设置像素?
在我的项目中,我想实现一个模块,自动添加或删除给定图片的对比度.我的问题是,找出我可以添加或删除多少对比度.我知道photoshops自动对比度/自动颜色功能.有人可以解释一下它的工作原理或理论/论文/想法如何实现这一点?
我知道,有一个直方图均衡功能.但那并不是我想要的功能.
例如,我想选择这三个与图像匹配的渐变曲线中的一个.
图片由ImageShack.us 主持http://img94.imageshack.us/img94/2656/grad2f.jpg 图片由ImageShack.us主持http://img819.imageshack.us/img819/9956/grad1j.jpg ImageShack 主持的图片.us http://img507.imageshack.us/img507/8176/grad0.jpg
问候
我想在OpenCV中将图像的亮度调整为某个值。例如,考虑以下图像:
我用以下方法计算亮度:
import cv2
img = cv2.imread(filepath)
cols, rows = img.shape
brightness = numpy.sum(img) / (255 * cols * rows)
Run Code Online (Sandbox Code Playgroud)
我得到的平均亮度为35%。例如,将其提高到66%,我这样做:
minimum_brightness = 0.66
alpha = brightness / minimum_brightness
bright_img = cv2.convertScaleAbs(img, alpha = alpha, beta = 255 * (1 - alpha))
Run Code Online (Sandbox Code Playgroud)
我得到的图像似乎具有50%的透明面纱:
我可以通过仅使用偏差来避免这种影响:
bright_img = cv2.convertScaleAbs(img, alpha = 1, beta = 128)
Run Code Online (Sandbox Code Playgroud)
而且图像似乎也带有面纱:
如果我手动进行此操作,例如在Photoshop中将亮度调整为150,则结果似乎还不错:
但是,这不是自动的,不会提供目标亮度。
我可以通过伽玛校正和/或直方图均衡来实现,以获得更自然的结果,但是除了反复试验外,我看不到获得目标亮度的简便方法。
有没有人成功将亮度自动调整为目标?
卡纳特建议:
bright_img = cv2.convertScaleAbs(img, alpha = 1, beta = 255 * (minimum_brightness - brightness))
Run Code Online (Sandbox Code Playgroud)
结果更好,但仍然有面纱:
Yves Daoust建议保持beta = 0,因此我进行了调整 …
我是图像处理的新手。我用Python3编程,使用OpenCV图像处理库。我想调整以下属性。
对于 4、5、6。我使用以下代码转换为 HSV 空间。
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)
h += value # 4
s += value # 5
v += value # 6
final_hsv = cv2.merge((h, s, v))
img = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)
Run Code Online (Sandbox Code Playgroud)
我为 1 和 2 找到的唯一教程是这里。本教程使用 C++,但我使用 Python 编程。另外,我不知道如何调整 3. 振动。我非常感谢您的帮助,谢谢!