- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建并查看随机图像。然后,此图像使用opencv编码为jpg文件。但是,在解码此图像后,颜色已略有变化。使用png进行编码无法看到此行为。谁能解释为什么会这样?是jpeg压缩的负面结果吗?难道我做错了什么?下面的代码示例来重新创建它。
import cv2
import numpy as np
random_image = np.random.randint(255, size=(4,4,3), dtype=np.uint8)
cv2.imshow('Image', random_image)
cv2.waitKey()
_, img_encoded = cv2.imencode('.jpg', random_image)
img_string = img_encoded.tostring()
npimg = np.fromstring(img_string, dtype=np.uint8)
img = cv2.imdecode(npimg, 1)
cv2.imshow('Image', img)
cv2.waitKey()
# Does not happen with png
_, img_encoded = cv2.imencode('.png', random_image)
img_string = img_encoded.tostring()
npimg = np.fromstring(img_string, dtype=np.uint8)
img = cv2.imdecode(npimg, 1)
cv2.imshow('Image', img)
cv2.waitKey()
编辑以添加一些4x4图像。
最佳答案
JPG
是有损压缩。实际上,它通过以对眼睛“无害”的方式修改颜色来起作用。 PNG
是一种无损压缩,因此您可以在编码/解码后获得确切的压缩效果。
通过指定JPG
参数,您可以控制有多少IMWRITE_JPEG_QUALITY
可以自由修改图像:
cv2.imencode(('.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 90])
较高的值表示较少的压缩,结果更接近原始。例如,
100
应该完全没有压缩,并且结果与原始结果相同。
关于python - 为什么cv2.imencode ('jpg',…)似乎改变了图像的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64342838/
我想知道是否有一些不需要OpenCV的cv::imencode函数替换。我想仍然在python下。 可以请教如何在不使用OpenCV的情况下更换它吗? 谢谢。 最佳答案 也许您可以看看我的https:
我有这个脚本部分: image = cv2.imdecode(data, 1) cv2.putText(image,"Hello World!", (10,10), cv
我正在使用这些代码将 Mat 图像编码为 .jpg 格式。它正在处理小图像,但是当我放置大图像时,项目会出现异常 Unhandled exception at 0x76377fb2 (ucrtbase
我创建并查看随机图像。然后,此图像使用opencv编码为jpg文件。但是,在解码此图像后,颜色已略有变化。使用png进行编码无法看到此行为。谁能解释为什么会这样?是jpeg压缩的负面结果吗?难道我做错
cv2.imencode 返回的缓冲区代表什么? 这是 1x1 像素图像的示例。 import cv2 impor numpy as np img= np.zeros((1,1,3),np.uint8
我正在尝试对 Mat CV_32FC1 图像进行编码,以使用 base64 将其发送到互联网上,该过程有效,但 OpenCV 编码格式错误。示例: vector buffer; vector comp
我正在尝试使用以下代码使用 opencv (2.4.10) 的 imencode 函数将 bmp 图像编码为 jpg。 void test() { cv::Mat img = cv::imre
我将图像保存在 IplImage 类型的变量中,如下所示: IplImage* fIplImageHeader; fIplImageHeader = cvCreateImageHeader(cvSiz
我正在尝试制作一个 REST API,并且遇到了这行代码- _, img_encoded = cv2.imencode('.jpg', image) 这是做什么的?不幸的是,我无法在 m 项目中使用
在将 cv::Mat 转换为 JPEG 时,cv::imencode 是否具有与 cv::imwrite 相同的行为?我知道第一个写入缓冲区,第二个写入文件,但我问的是写入的内容。 最佳答案 当您调用
我一直在努力将 JNI 中的 CV:Mat 作为 Java byte[] 发回,以便它可以使用 BitmapFactory.decode() 成功解码。当我第一次从 Java 端引入我的 byte[]
我注意到 4.1 MB/s @50fps 1280x720 bgr8。 .....和 3.7 MB/s @50fps 1280x720 单声道8。 我预计灰度的带宽消耗会减少大约 3 倍。 我完全编辑
所以我尝试通过 cv::imencode apis 将图像保存到 ostream .从 imencode 我们得到 vector 。作为shown here它可以存储到任何 ostream 中。例如
我已经安装了 OpenCV-3.1.0 并且在 3.0.0 或更高版本中,Java 中没有 HighGUI 模块。该功能分为两个附加模块(videoio、imgcodecs)。 我正在尝试使用带有 O
我尝试创建一个 Magick::Image obj,其中包含由 png 数据构建的 blob(png 由 cv::imencode 创建)。当我使用由 jpg 数据构造的 blob 创建 Magick
我是一名优秀的程序员,十分优秀!